#include <stdio.h>
void main()
{
int j = 5, q;
q = (++j)+(++j)+(++j);
printf("j=%d, q=%d\n", j, q);
}
先是j两次自增=7,然后计算j+j=14,然后计算14+(++j),此时j再自增一次为8,故答案为22。
这是一种未定义行为,不同编译器有不同的处理方式,出现什么结果都有可能,所以不要纠结…
#include <stdio.h>
void main()
{
int j = 5, q;
q = (++j)+(++j)+(++j);
printf("j=%d, q=%d\n", j, q);
}
先是j两次自增=7,然后计算j+j=14,然后计算14+(++j),此时j再自增一次为8,故答案为22。
这是一种未定义行为,不同编译器有不同的处理方式,出现什么结果都有可能,所以不要纠结…