C语言菜鸟问题如下#include "stdio.h"void main(){ int d=5,p=3;\x05d+=++p+(++p);\x05printf("%d",d);}为什么输出15?而不是4+5+5=14如果改为d+=p+++p++;则等于11(5+3+3)

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/16 18:11:44

C语言菜鸟问题如下#include "stdio.h"void main(){ int d=5,p=3;\x05d+=++p+(++p);\x05printf("%d",d);}为什么输出15?而不是4+5+5=14如果改为d+=p+++p++;则等于11(5+3+3)
C语言菜鸟问题如下
#include "stdio.h"
void main()
{ int d=5,p=3;
\x05d+=++p+(++p);
\x05printf("%d",d);
}
为什么输出15?而不是4+5+5=14
如果改为d+=p+++p++;则等于11(5+3+3)

C语言菜鸟问题如下#include "stdio.h"void main(){ int d=5,p=3;\x05d+=++p+(++p);\x05printf("%d",d);}为什么输出15?而不是4+5+5=14如果改为d+=p+++p++;则等于11(5+3+3)
++ 这个操作符你没有理解,++如果放在变量的前面就是前加,而前加操作,是在运算式运行之前执行的,也就是说d+=++p+(++p)
两个++p 都在这个运算表达式之前就执行了,那么在执行这个运算式之前
p就已经被++过两次了,所以在运行运算式之前P的值就是5了.所以结果是15
p+++p++ 这个是后加,即表达式结束之后再做++操作,结果自然是11