找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3034|回复: 3

[通用编程] 再问个逻辑运算问题

[复制链接]
发表于 2007-2-5 15:25:32 | 显示全部楼层 |阅读模式
#define S x=y=z
#define P3(x,y,z) printf("x=%d\ty=%d\tz=%d\n",x,y,z)
main{}
{
int x,y,z;
S=1;++x||++y||++z3(x,y,z);
}
为什么答案是2,1,1呢?我记得是若||一端为1就不必计算另一端,但是先计算++x的,那时就是2了并不是等于1,为什么后面的++y,没有跟着增值呢?
发表于 2007-2-5 15:32:11 | 显示全部楼层
真值是 非0 而不是单单指1...2也算真值
||左边为真那么后面自然就不计算了
发表于 2007-3-10 00:53:50 | 显示全部楼层
我个人认为是编译器的优化的问题
发表于 2007-3-11 19:43:32 | 显示全部楼层
同意楼上的,而且其实合并把++等写在一起看起来好似很节约空间,实际上反而在搞混自己和以后的阅读者,偶还是希望楼主不要用这种容易搞错的方式编写而是分开

因为基本上这些代码从编译角度来看还是会大部分被分开的…… [s:6]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|幻想森林

GMT+8, 2026-11-6 19:22 , Processed in 0.012158 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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