c语言 int x=1,y=1;求(! x||y--)的值 答案是0,为什么啊?

[复制链接]
查看11 | 回复3 | 2011-1-10 19:24:24 | 显示全部楼层 |阅读模式
其实涉及到是 y--还是y参与||运算,谭浩强版说是y

回复

使用道具 举报

千问 | 2011-1-10 19:24:24 | 显示全部楼层
应该是1。因为y++是先使用y的值,然后再把y的值加1。在这个表达式中是先把y的值与表达式相连求出表达式的值,然后把y的值加1,如果下面再次用到y的话,y的值就不是1了,而是0。
回复

使用道具 举报

千问 | 2011-1-10 19:24:24 | 显示全部楼层
你的答案是错的,应该是1。我在tc2, vc6,vs2005里测试的答案都是1。请你贴出你的源代码和编译运行环境。 这个问题我看到的时候很奇怪,因为按照y--,会直接把y也就是1送出去,那么那面不管是x还是!x,这个表达式返回的必然是1,因为y是1,是真啊,有一个真,其他的假在||面前都是白费。
回复

使用道具 举报

千问 | 2011-1-10 19:24:24 | 显示全部楼层
优先级顺序是!>&>||!x为假,既为0,y--即y=y-1,所以y变为0;所以整个为0咯!
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行