为了账号安全,请及时绑定邮箱和手机立即绑定

求助大神c语言问题(2>3)&&(x=5)结果是1?(2<3)&&(x=5)结果是5?为什么?

求助大神c语言问题(2>3)&&(x=5)结果是1?(2<3)&&(x=5)结果是5?为什么?

C C++ C#
帝国神鹰 2017-03-20 10:44:35
(2>3)&&(x=5)结果是1?(2<3)&&(x=5)结果是5?为什么?
查看完整描述

4 回答

?
snowmanJS

TA贡献89条经验 获得超53个赞

逻辑运算符 && || 的运算顺序是从左往右,若左边的关系表达式就能判断整个逻辑表达式的结果,就不计算右边表达式;否则执行。这个称为短路。 (2>3) && (x=5) 左边2>3为假,所以整个表达式就为假,右边的表达式不执行。
查看完整回答
1 反对 回复 2017-04-08
?
asd8532

TA贡献143条经验 获得超187个赞

#include <stdio.h>
int main(){
	int x;
	printf("%d\n",(2>3)&&(x=5));//0
	printf("%d\n",(2<3)&&(x=5));//1
	return 0;
}
#include <stdio.h>
int main(){
	int x=1;
	int y=(2>3)&&(x=5);//x=1,2<3已经为假了,后面的直接省略了不去计算了,加快程序的运行效率
	int z=(2<3)&&(x=5);//x=5
	return 0;
}


查看完整回答
1 反对 回复 2017-03-20
  • 帝国神鹰
    帝国神鹰
    前面忘写int x=1了,还是不懂2&gt;3是0再&amp;&amp;不还是0?定义x=1那x=5不成立是0?
  • asd8532
    asd8532
    2>3是0,x=5不计算,&&是要两个都为真 至于第二个你是x=5,不是x==5,赋值一直都是为真的
  • __YXQ__
    __YXQ__
    x=5,等号是赋值操作。&&是短路操作,&&左边的条件为不为真,则右边的语句不执行,如果此处只有一个&,则&两侧语句都会执行,不论真假。
  • 4 回答
  • 1 关注
  • 2437 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信