永发信息网

C语言中,如果要判断两个数是否同时为1,能不能用连等表达式?

答案:6  悬赏:50  手机版
解决时间 2021-12-03 23:40
C语言中,如果要判断两个数是否同时为1,能不能用连等表达式?
最佳答案
上面的不行,逻辑判断连续来语法上是没有问题的,但是得不到想要的结果,呵呵
道理应该很简单,如a == b == 1这个,运算顺序是先运算a == b返回值是0或者1,再让这个0或者1和这个后面的表达式运算,也就是0或者1和后面的1运算,
0==1或者1==1来做

所以说语法上没有问题,但是结果不一定是你想要的
如果ab都为2,那么a==b返回1,和1运算,那么返回1,但是ab是2,但不是1,可是返回1,是正确的
明白没??????????
全部回答
if(a==1 && b==1)
if(1 == a&b)
以我的经验,实际中不能用连等。
假设语法合法,如果从左到右计算的话a==b结果为1,刚巧 1==1,最终结果为1,可以通过。
==运算符的求值顺序是“从左到右”,那么对于a == b == 1来说,先计算a(假如是表达式的话),再计算b,如果满足a == b就决定了该逻辑表达式的值,不再进行 == 1的比较运算,这是由于“短路”效应造成的,等效于a == b || b == 1,显然与你的目的不符,所以说,要判断a和b是否同时为1,不能写成if (a == b == 1),而只能写作if((a == b) && (b == 1)),或if((a == 1) && (b == 1)),或if((1 == a) && (1 == b))等。
用a == b && a == 1
写个程序验证一下
#include
#include
int main(int argc, char* argv[])
{
int a = 3;
int b = 3;
if(a==b==1)
printf("a,b都是1\n");
else
printf("a,b不都是1\n");
system("pause");
return 0;
}
输出结果为 :
a,b都是1

因为 a==b==1 即 (a==b)==1
在a=3,b=3 时 a==b的值为1
1==1
也为1

可见a == b == 1 只用表示 ab相等,不能表示ab都为1
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
利民村地址在哪,我要去那里办事,
官网12306买火车票怎么多收14.5元钱,这是怎
单选题世界上三个能够发射载人航天飞船的国家
与孔子绝编有关的四字成语
菩萨诫不能养猫
锑和铋为什么是冷胀热缩?
重庆北站坐K814到达州需要在哪个广场上车呢?
材料一:图1“美国略图”,图2“中、美主要农
卡马D1C吉他怎么样
25岁是不是老了
证明一个单位的下属单位怎么开
Win7x64 设置虚拟内存那里变成灰色了,重启几
可不可以帮我参谋参谋
维正统十年是何朝代
单选题Shestruggledforthe________ofhe
推荐资讯
细雨洒在树叶上,改写得富有诗情画意。
利用还有什么排比造句
W=Uq只适用匀强电场?
怎样养鹦鹉鱼?家养什么品种好?从小养好吗?
你好,能不能帮我改一下个体值
核桃的分心木泡水喝就可以了吗,还是要泡了再
居住证不满三个月可以买车上牌吗
申请爱资哈尔大学的学历,语言,要求
I2C读数据问题
什么时候开始汽车和摩托车上牌,可以自己选号
兴隆派出所地址有知道的么?有点事想过去!
ps不能同时打开2张图片然后合成怎么办
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?