在C中,+++ b等于a + b ++?
答案 0 :(得分:5)
如果您提供操作数的相同初始值, 且将相等。
在您的情况下,第一个语句的副作用(a
上的后增量)会影响第二个语句。由于第一个表达式中存在后递增,a
在执行下一个语句之前递增到3
。
重新初始化具有相同起源值的变量。
答案 1 :(得分:3)
您需要检查C operator precedence以了解它。
令人困惑的是,a+++b
可能会被理解为a + (++b)
或(a++) + b
。根据{{3}},它实际上看起来像:
int a=2, b=3, c;
c = (a++) + b; // 2+3=5 and 'a' will be 3 after that line
printf("%d\n",c); // c = 5
c = a + (b++); // 3+3=6 and 'b' will be 4 after that line
printf("%d\n",c); // c= 6
从上面的链接:
++
as sufix具有最高优先级。
++
作为前缀的优先级较低。
+
的优先级更低。
答案 2 :(得分:0)
int a=2, b=3, c;
c = (a++) + b; // The value for a will be 3 after that line
printf("%d\n",c); // c = 5
c = a + (b++); // So here a value is 3 (3+3) =6 after executing this line b value will be 4
printf("%d\n",c); // c= 6
为避免这种情况,您需要重新初始化变量
答案 3 :(得分:0)
c = a+++b;
等同于
c = a++ + b;
a++
表示后递增,表示表达式取a
的值,然后递增。
c = a+b++;
等同于
c = a + b++;
b++
表示后递增,表示表达式取b
的值,然后递增。
如果在两种情况下都提供相同的值,那么两个表达变量c相同。