有脏东西,在一些在线编程的网站上是8和5

在教程上这个本来结果应该是8和5

#include<stdio.h>
int main(void)
{
	int a=3;
	int b;
	b=(++a)+(a++);
	printf("a=%d,b=%d",a,b);
	return 0;
}

真的无语了,输出结果却是9和5

目前出来结论是编译器不同,顺序规则不一样导致的

得出b=8是因为左到右个自加被单独计算了为4+4,而a++是在整个计算结束后才自加

而b=9的是因为括号优先级a的值是在变化的,++a后a的值就为4了,之后在括号内又一次自加变为5

QQ:2219349024
最后更新于 2023-12-10