A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jinzhinan 中级黑马   /  2014-11-2 20:50  /  1489 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

难道不是++x等于1,因为是逻辑或所以++y不执行,所以前半部分为真,后面是逻辑与两个条件同时满足才成立,基于条件一为真所以会继续执行++z,  我得出的答案是1,0,1  但是运算结果是1,0,0#include <stdio.h>
int main()
{
    int x,y,z;
    x=y=z=0;
    ++x || ++y && ++z;
    printf("%d,%d,%d",x,y,z);
    return 0;
}

评分

参与人数 1技术分 +1 收起 理由
星河鹭起 + 1

查看全部评分

5 个回复

倒序浏览
因为||和&&运算符是逻辑运算符,执行到++x || ++y && ++z;这一句时,从左到右算,先算++x ,x =1为真,因为||运算符只要有一个为真,结果就真,所以不会在去计算++y&& ++z,所以最后结果是1,0,0  
回复 使用道具 举报
因为||和&&运算符是逻辑运算符,执行到++x || ++y && ++z;这一句时,从左到右算,先算++x ,x =1为真,因为||运算符只要有一个为真,结果就真,所以不会在去计算++y&& ++z,所以最后结果是1,0,0  
回复 使用道具 举报
我的看法是:||与&&是同优先级的运算符,执行++x || ++y && ++z; 从左道右算,又因为这些运算符需要两边都有条件可以看为:++x || (++y && ++z);此时,在逻辑或中,++x,x=1为真,右边的条件无论真假都不会执行,判断结果为真,所以(++y && ++z)不会执行,结果为1,0,0.

评分

参与人数 1技术分 +1 收起 理由
星河鹭起 + 1

查看全部评分

回复 使用道具 举报
易拉罐 发表于 2014-11-2 21:08
因为||和&&运算符是逻辑运算符,执行到++x || ++y && ++z;这一句时,从左到右算,先算++x ,x =1为真,因为 ...

知道了,谢谢
回复 使用道具 举报
jy02305403 发表于 2014-11-2 22:24
我的看法是:||与&&是同优先级的运算符,执行++x || ++y && ++z; 从左道右算,又因为这些运算符需要两边都 ...

看做这样 (++y && ++z),就更好理解了,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马