注册 登录
编程论坛 C++教室

关于&&与||

boris250 发布于 2007-09-12 16:21, 422 次点击

在C++中,&&与||在运算时优先级应该为同一级别,但是在进行表达示“3<x<5 ||y>3 && y<2”运算时得到值为1;如果“(3<x<5 ||y>3) && y<2”时却为0,请教高手。

3 回复
#2
雨中飞燕2007-09-12 16:25
错,级别不一样,书上应该有讲
&&的优先级高!



by 雨中飞燕 QQ:78803110 QQ讨论群:5305909

[url=http://bbs.bc-cn.net/viewthread.php?tid=163571]请大家不要用TC来学习C语言,点击此处查看原因[/url]
[url=http://bbs.bc-cn.net/viewthread.php?tid=162918]C++编写的Windows界面游戏[/url]
[url=http://yzfy.org/]C/C++算法习题(OnlineJudge):[/url] http://yzfy.org/
#3
snakeImao2007-09-12 17:39
课本是&&优先级高。
不好意思,开始理解错了!
3<x<5 是合法的C++表达式.但它是表示(3<x)<5.由于(3<x)是一个布尔表达式,所以它的值要么为true,要么为false,最后都会转换成 1 或 0 .因此,不管 x 的值是什么, 3<x<5 肯定为true( 1 和 0 都小于 5 ). 而 y>3 && y<2 不管 y 的值是什么,都为false ,所以“3<x<5 ||y>3 && y<2”为true ,即输出 1.

同理 “(3<x<5 ||y>3) && y<2” 可能为true,也可能为false .

[此贴子已经被作者于2007-9-13 15:50:20编辑过]

#4
nuciewth2007-09-12 21:02
x,y初值都没有,怎么来的结果
1