LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 607|回复: 5

问一个比较简单的C问题

[复制链接]
发表于 2004-7-11 20:02:29 | 显示全部楼层 |阅读模式

main()
{
int c;
c=0;
printf("%d,%d,%d",c++,c++,c++);
}


屏幕显示 2,1,0

如何解释???????
发表于 2004-7-11 20:17:05 | 显示全部楼层
因为在gcc的printf函数按照从右到左顺序进行运算:
c++,c++,c++三个表达式的值分别为2,1,0;而运算之后C的值分别:3,2,1

注:这种语句存在歧义性,不方便移植;应该避免使用。
发表于 2004-7-11 20:24:47 | 显示全部楼层

回复: 问一个比较简单的C问题

我现找笔记翻了一下:
printf("%d,%d,%d",c++,c++,c++);
printf("%d,%d,%d",①   ,②   ,③   );

如果printf后面的表达式变元有多个,先从后往前确定变元本身,然后再从前往后打印。:

③先取c当前的值0,然后加1
②先取c当前的值1,然后加1
①先取c当前的值2,然后加1

依①、②、③的顺序打印成2,1,0

在dos、windows、linux环境下结果万全相同。
发表于 2004-7-11 20:32:23 | 显示全部楼层
tc2好象就不一样,试试tc2
发表于 2004-7-11 20:33:15 | 显示全部楼层
我国会而试试。
发表于 2004-7-11 20:46:20 | 显示全部楼层

试了一下,tc2下结果也是2,1,0

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

本版积分规则

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