C语言中算术运算的层次结构。

C语言中算术运算的层次结构。,c,hierarchy,C,Hierarchy,当我输入下面给出的代码时: int a=10,b,c,d,e; c= a++; d = ++a; e = ++a; printf("value of c=%d, d =%d, e=%d",c,d,e); 它给我一个输出,比如c=10,d=12,e=13 当我们添加这些值时,即10+12+13变成35, 但当我编写代码时,它是这样的: b = a++ + ++a + ++a; printf("value of b=%d" ,b); 它给我输出36 有人能描述一下这个代码背后的过程吗?为什么代码

当我输入下面给出的代码时:

int a=10,b,c,d,e;
c= a++;
d = ++a;
e = ++a;
printf("value of c=%d, d =%d, e=%d",c,d,e);
它给我一个输出,比如
c=10
d=12
e=13
当我们添加这些值时,即
10+12+13
变成
35
, 但当我编写代码时,它是这样的:

b = a++ + ++a + ++a;
printf("value of b=%d" ,b);
它给我输出
36

有人能描述一下这个代码背后的过程吗?为什么代码的输出是不同的?
谢谢大家!

它们之间的区别在于,第二个表达式并没有以++结尾,还需要添加一些其他值,这就是为什么a++是11,而不是10

int a=10,b,c,d,e;
c= a++;
d = ++a;
e = ++a;
printf("value of c=%d, d =%d, e=%d",c,d,e);
在语句
c=a++
中,首先使用
a
的值(即
10
),然后增加到
11

语句
d=++a
第一个增量
a
(现在是
12
),然后使用其值在
printf()语句中打印。
同样适用于
e=++a

你的第二个片段

b = a++ + ++a + ++a;
printf("value of b=%d" ,b);

结果在未定义的行为()中,
+
的操作数的求值顺序由实现决定。因此,第二个例子并不总是
36

第二个片段不一定总是36。谢谢你澄清所有的事情……你的答案也是正确的。我很高兴它帮助了你。参见常见问题