c=a+++b是什么意思?

What does the operation c=a+++b mean?

本文关键字:意思 是什么 a+++b      更新时间:2023-10-16

下面的代码把我弄糊涂了

int a=2,b=5,c;
c=a+++b;
printf("%d,%d,%d",a,b,c);

我期望输出是3,5,8,主要是因为a++意味着2 +1等于3,而3 + 5等于8,所以我期望是3,5,8。结果是3 5 7。有人能解释一下为什么会这样吗?

解析为c = a++ + b, a++表示后增量,即取a的值计算a + b == 2 + 5后的增量。

请,永远不要写这样的代码

maximum Munch Rule适用于这样的表达式,根据该规则,表达式解析为:

c = a++ + b;

也就是说,a是后加的(a++),所以a的当前值(后加之前)是+b的操作。

a++是post递增,即表达式取a和的值,然后加1。
C = ++a + b会达到你的预期。

这是一个糟糕的编程风格的例子。

这是相当不可读的,但是它增加了a,所以它将a的当前值求和为b,然后增加a !

a++在表达式之后求值。

c = ++a + b;会给你想要的。

后增量操作符a++在表达式中计算a的值后改变a的age值。因为a的初始值是2,这就是用来计算c的;

在计算完++后,a的值被改变以反映新的值。

a++ + b…它给出结果7,之后a的表达式值更新为3,因为后增量操作符

根据最长匹配规则,在编译器词法分析阶段将其解析为++ ++ b。因此结果输出。

这里c= a+++b;均值c= (a++) +b;即后增量。在a++中,更改将发生在打印a, b和c的下一步中。在++a中,即前缀递增,更改将在同一步骤中发生,它将给出8的输出。