c语言关于自增运算符的问题
#include<stdio.h>int main() {
int a = 3;
printf("++a = %d, a++ = %d\n",++a,a++);
return 0;
}
运行结果:
++a = 5, a++ = 3
感觉好奇怪啊,不能理解
{:9_241:} 本帖最后由 jhq999 于 2022-3-15 14:54 编辑
printf("++a = %d,a=%d, a++ = %步骤d\n",++a,a,a++);//会不会更懵B
++a = 5,a=5, a++ = 3
不要纠结,遇到直接分解成自己需要的步骤 printf比较特殊,它是自右至左压栈
所以先看a++那么表达式值为3 此时a等于4
再看++a 此时表达式值为5 wp231957 发表于 2022-3-15 14:51
printf比较特殊,它是自右至左压栈
所以先看a++那么表达式值为3 此时a等于4
再看++a 此时表达式值 ...
哇哦,我明白了 jhq999 发表于 2022-3-15 14:50
啊这 首先你可以试试理解:#include <stdio.h>
int main() {
int a, b, c;
a = 3;
b = a++;
c = ++a;
printf("%d %d %d", a, b, c);
return 0;
}输出结果:5 3 5 本帖最后由 jhq999 于 2022-3-15 15:29 编辑
a=3;
b=a;//遇到后缀重新申请内存相当于变量b,然后把a赋值给b,前缀和本身不变
a+=1;
a+=1;
printf("%d %d %d", a,a,b);//printf("++a = %d,a=%d, a++ = %步骤d\n",++a,a,a++);
a=3;
b=a;
a+=1;
c=a;
a+=1;
a+=1;
printf("++a = %d,a++=%d, a++ = %d\n",a,c,b);//printf("++a = %d,a++=%d, a++ = %d\n",++a,a++,a++);结果6 4 3
感觉没必要纠结这玩意,少出BUG最好步骤分解
页:
[1]