C语言基础1
如果a是变量,C中a++和a=a+1之间的区别是什么。 告诉我以下作业的区别C语言基础1,c,C,如果a是变量,C中a++和a=a+1之间的区别是什么。 告诉我以下作业的区别 x=a+1; x=a++; 我无法在谷歌上找到令人信服的解释。请清楚地一步一步地解释差异。x=a++首先将a的值返回变量x,然后将其递增 x=a+1此处计算a+1,结果存储在xa=a+1计算a+1的结果并将其分配给a a++将a增加1,但计算结果为a的上一个值 ++a将a增加1,并计算为a的新值 a+=1与++a相同 例如: x=a++→a将递增1,并且a的上一个值将分配给x x=++a→ a将递增1,而a的新值将分
x=a+1;
x=a++;
我无法在谷歌上找到令人信服的解释。请清楚地一步一步地解释差异。
x=a++
首先将a
的值返回变量x
,然后将其递增
x=a+1
此处计算a+1
,结果存储在x
a=a+1
计算a+1的结果并将其分配给a
a++代码>将a
增加1
,但计算结果为a
的上一个值
++a代码>将a
增加1
,并计算为a
的新值
a+=1
与++a相同代码>
例如:
x=a++代码>→a
将递增1
,并且a
的上一个值将分配给x
x=++a代码>→ a
将递增1
,而a
的新值将分配给x
x=a+1
仅设置x
的值。
x=a++
首先将x
设置为a
的值,然后递增a
a++
本身就是一个操作,您可以将其作为单个语句调用以递增a
,而无需将其分配给x
仅供参考,还有++a
,可以这样使用:
x=++a
。在这种情况下,a
首先递增,然后递增的值被分配给x
。在任何一种情况下,++
操作符都会修改a
,而C11标准(草案)中的a+1
则不是这种情况:
6.5.2.4后缀增量[…]运算符[…]
[……]
2后缀++运算符的结果是操作数的值。作为副作用
操作数对象的值递增(即,适当类型的值1为
添加到它)
所以
结果a
为1
和x
为0
3个差异
返回值和副作用
// a is incremented, but its former value is assigned to x
x=a++; //
// a is unchanged. The sum of `a+1`is assigned to x
x=a+1;
。后缀++
(又称后缀增量)的优先级高于简单加法
++
仅适用于整数和非空*
指针类型<代码>+1
适用于所有标量类型,包括double
int a;
x=a++; // valid
x=a+1; // valid
double a;
x=a++; // invalid
x=a+1; // valid
试一试怎么样?示例中的++
称为后增量运算符。这应该对你的谷歌搜索有所帮助。
int a;
x=a++; // valid
x=a+1; // valid
double a;
x=a++; // invalid
x=a+1; // valid