幻想森林

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

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

[复制链接]

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
发表于 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,没有跟着增值呢?
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复

使用道具 举报

88

主题

5419

帖子

214748万

积分

版主

S素世上最伟大最华丽

Rank: 7Rank: 7Rank: 7

积分
2147483647
QQ
发表于 2007-2-5 15:32:11 | 显示全部楼层
真值是 非0 而不是单单指1...2也算真值
||左边为真那么后面自然就不计算了
回复 支持 反对

使用道具 举报

20

主题

197

帖子

2641

积分

⑥精研

积分
2641
QQ
发表于 2007-3-10 00:53:50 | 显示全部楼层
我个人认为是编译器的优化的问题
签名要少于60,SO,i haven't upload my pic
回复 支持 反对

使用道具 举报

50

主题

742

帖子

402

积分

版主

自定义头衔

Rank: 7Rank: 7Rank: 7

积分
402
发表于 2007-3-11 19:43:32 | 显示全部楼层
同意楼上的,而且其实合并把++等写在一起看起来好似很节约空间,实际上反而在搞混自己和以后的阅读者,偶还是希望楼主不要用这种容易搞错的方式编写而是分开

因为基本上这些代码从编译角度来看还是会大部分被分开的…… [s:6]
Style-C
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-1 09:27 , Processed in 0.024383 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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