main() { int a=0,b=1,c=2; if(++a>0||++b>0) ++c; printf("%d,%d,%d",a,b,c); getch(); }结果是,1。1。3

我就不明白为什么得这么结果,想了好久也想不明白,他是怎样算的请大家教下我好嘛说明白点,一步,一步的说,好嘛... 我就不明白为什么得这么结果,想了好久也想不明白,他是怎样算的请大家教下我好嘛说明白点,一步,一步的说,好嘛 展开
 我来答
kangjiabei
2012-05-27 · TA获得超过281个赞
知道小有建树答主
回答量:398
采纳率:100%
帮助的人:279万
展开全部
因为++a自加在前所以现自加a等于1
b同上
1>0 || ++b>0或运算只要一边成立就为真 所以b不自加 如果a<0 执行++b你可以试试
++c //c=3
所以结果为1 1 3
书来了
2012-05-27 · 好书推荐 | 知识分享 | 读书成长
书来了
采纳数:105 获赞数:579

向TA提问 私信TA
展开全部
首先从if的条件讲起
++a>0||++b>0
++a>0 --> 1>0 为真
||的运算规则是 前面为真 则跳过后面一个条件的运算 因为不管后面一个条件的真假
这整个条件的值都是 真
但是如果 || 符号前面的条件值为 假时 则运算后面一个值
所以++b>0就没有运算 b仍然等于1

我想你应该就这个没弄懂吧。
剩下的你应该明白了

你可以试试把条件改成
if(++b>0||++a>0)
你就明白了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
adah_wu
2012-05-27 · 超过31用户采纳过TA的回答
知道答主
回答量:74
采纳率:100%
帮助的人:69.8万
展开全部
int a=0,b=1,c=2; // 不需要解释吧
++a>0 // a成了1,然后做了次1>0的比较,结果为真
++a>0||++b>0 // 由于||之前已经为真,||之后的表达式就不执行了,b的值不变
++c; // if成功,执行下面的语句

你应该是没理解||和&&的估值规则吧。他们的左边是必然会被执行的,但左边执行完之后,右边就不一定了。上面是||,如果&&的话,左边为假则&&右边不执行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
411294219
2012-05-27
知道答主
回答量:86
采纳率:100%
帮助的人:23.4万
展开全部
蓝桥的题目吧 这里要从C语言的符号优先级进行考虑 不会再问我吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式