鱼C论坛

 找回密码
 立即注册
查看: 975|回复: 6

[已解决]c语言关于自增运算符的问题

[复制链接]
发表于 2022-3-15 14:29:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

运行结果:
++a = 5, a++ = 3

感觉好奇怪啊,不能理解
最佳答案
2022-3-15 14:51:24
printf比较特殊,它是自右至左压栈
所以先看a++  那么表达式值为3    此时a等于4
再看++a   此时表达式值为5
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-15 14:50:52 | 显示全部楼层
本帖最后由 jhq999 于 2022-3-15 14:54 编辑
printf("++a = %d,a=%d, a++ = %步骤d\n",++a,a,a++);//会不会更懵B
++a = 5,a=5, a++ = 3
不要纠结,遇到直接分解成自己需要的步骤
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-3-15 14:51:24 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
printf比较特殊,它是自右至左压栈
所以先看a++  那么表达式值为3    此时a等于4
再看++a   此时表达式值为5
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-3-15 14:53:38 | 显示全部楼层
wp231957 发表于 2022-3-15 14:51
printf比较特殊,它是自右至左压栈
所以先看a++  那么表达式值为3    此时a等于4
再看++a   此时表达式值 ...

哇哦,我明白了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-15 14:54:09 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-15 15:03:45 From FishC Mobile | 显示全部楼层
首先你可以试试理解:
#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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-3-15 15:25:55 | 显示全部楼层
本帖最后由 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最好步骤分解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-5 12:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表