为什么这两段代码结果不一样呢?


#include<stdio.h>
int main(){
    int a = 2; 
    printf("a = %d\n",a);
    a = 2;
    int c = ++a + ++a+ ++a;
    
    printf("c = %d",c);
} 

img

上面的结果是13

#include<stdio.h>
int main(){
    int a = 2; 
    printf("a = %d\n",&a);
    a = 2;
    int c = ++a + ++a+ ++a;
    
    printf("c = %d",c);
} 

img

这次的结果又是12

虽然我不知道是啥原理,但是这和你之前的printf有关,你之前输出在a前面放上了不该有的&所以结果不一样

像++a ++a ++a,这种不同的编译器 结合优先级不一样,所以结果就不一样,你的代码在我的vs2019中运行结果都是15.