在C中,+++ b等于a + b ++?

时间:2017-04-04 05:55:53

标签: c

在C中,+++ b等于a + b ++?

4 个答案:

答案 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相同。