鱼C论坛

 找回密码
 立即注册
查看: 598|回复: 5

求助帖,下面的代码是什么原因

[复制链接]
发表于 2020-8-20 17:12:15 | 显示全部楼层 |阅读模式

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

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

x
#define A(X) X*X*X
int main()
{
        int n =3;
        //A(printf("%d ", n++));  这样输出是3 4 5
        int a =A(printf("%d ", n++)); //这样输出是 5  4  3
}

有人给解释下为什么加了一个变量后,为什么输出的顺序变了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-20 17:22:27 | 显示全部楼层
我的输出都是3 4 5,和编译器有关?
其实也没必要深究这个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-20 17:38:00 | 显示全部楼层
巴巴鲁 发表于 2020-8-20 17:22
我的输出都是3 4 5,和编译器有关?
其实也没必要深究这个

那可能吧,我试了下发现结果不一样,好奇
我用的vs
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-20 19:55:07 | 显示全部楼层
wxiaop 发表于 2020-8-20 17:38
那可能吧,我试了下发现结果不一样,好奇
我用的vs

我的是Dev
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-21 01:15:24 | 显示全部楼层
我用VC++6.0编译,有变量的编译正常,运行正常,输出结果:3 4 5 ;没有变量 a 的,编译时出现一条告警:
warning C4552: '*' : operator has no effect; expected operator with side-effec ,运行正常,输出结果:3 4 5

用DEV_C++ 2013编译,两条编译都不能编译
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-21 15:05:42 | 显示全部楼层
风过无痕1989 发表于 2020-8-21 01:15
我用VC++6.0编译,有变量的编译正常,运行正常,输出结果:3 4 5 ;没有变量 a 的,编译时出现一条告警:
...

好的,知道什么情况了,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-22 08:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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