首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于a == b的返回值的有关问题

2013-04-21 
关于a b的返回值的问题a b成立返回1---------------那么if( ((ab)+(bc)+(cd)) 2) )就可以

关于a == b的返回值的问题
a == b成立返回1
---------------
那么if( ((a==b)+(b==c)+(c==d)) == 2) )就可以判断3个条件中的2个成立
为什么都不这样写,都写成
if((xx)&&(xx) || (xx)&&(xx) || (xx)&&(xx))这种复杂的形式? C
[解决办法]
1、你说的两个式子貌似不等价
2、短路表达式的优势
[解决办法]
你的办法也行,但是要看==这个操作符怎么定义的了,返回值如果被改成了bool的话你的那套不就不管用了么,赵老师教导我们不要纠结于写法。不要找生僻的写法。
[解决办法]
(a == b)和 (a && b) 不是一回事,前者如果值是1表示相等,后者返回1表示两者都为"真"但不一定相等
[解决办法]
当关系表达式(如i>j)以及有 && 、
[解决办法]
 连接的逻辑表达式的判定结果为真时,表达式的值为1;当判定结果为假时,表达式的值为0.
但是,某些函数在结果为真时可能返回任意的非0值。
另外,由逻辑运算符 &&、
[解决办法]
 连接的表达式按从左到右的顺序进行求值,并且,在知道结果值为真或假后立即停止运算。 
[解决办法]
那么if( ((a==b)+(b==c)+(c==d)) == 2) )就可以判断3个条件中的2个成立
为什么都不这样写,都写成
if((xx)&&(xx) 
[解决办法]
 (xx)&&(xx) 
[解决办法]
 (xx)&&(xx))这种复杂的形式?

你的两个写法不等价
if( ((a==b)+(b==c)+(c==d)) == 2) )必须是 3个表达式只成立2个
if((xx)&&(xx) 
[解决办法]
 (xx)&&(xx) 
[解决办法]
 (xx)&&(xx))这个写法 三个表达式 至少成立2个[也就是说 可以成立2个 也可以成立三个]

如果想表达 只成立2个if( ((a==b)+(b==c)+(c==d)) == 2) )这个写法是一个不错的选择 

[解决办法]

引用:
你的办法也行,但是要看==这个操作符怎么定义的了,返回值如果被改成了bool的话你的那套不就不管用了么,赵老师教导我们不要纠结于写法。不要找生僻的写法。


嗯  认可   

[解决办法]
引用:
那么if( ((a==b)+(b==c)+(c==d)) == 2) )就可以判断3个条件中的2个成立
为什么都不这样写,都写成
if((xx)&&(xx) 
[解决办法]
 (xx)&&(xx) 
[解决办法]
 (xx)&&(xx))这种复杂的形式?

你的两个写法不等价
if( ((a==b)+(b==c)+(c==d)) == 2) )必须是 3个表达式只……


正解。

热点排行