int a=1,b=2,c=1,d; d=a++II--c&&b++ 单目优先级高于逻辑,是不是先算a++ b++和c++ 再算“与”“或”啊?

[复制链接]
查看11 | 回复2 | 2011-4-14 13:03:54 | 显示全部楼层 |阅读模式
全部是“与”“或”我知道规则,“与”遇到假就不计算后面的部分了,不管后面优先级的高低,就当它不存在。 但是在一道题中,既有与,也有或,该怎么算呢?求高手赐教,最好举个例子。

回复

使用道具 举报

千问 | 2011-4-14 13:03:54 | 显示全部楼层
首先 d=a++||--c&&b++ 可以变为d=(a++)||((--c)&&(b++)),因为 &&比||优先级别高。然后由于||的短路特性,a++执行了 所以a=2最后,然后a++执行完了 ,但是由于是后缀++,所以||左边判别的条件是原来的a ,也就是1,为真,所以d=1,因为True被翻译为1.c与b的值没有改变。
回复

使用道具 举报

千问 | 2011-4-14 13:03:54 | 显示全部楼层
既有与,也有或,从左往右算就好了,是先算a++ b++和c++这里因为a++为真,那就不算后面的,d直接就是1,后面cb的值就不会改变了
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行