定义:int x=3,y=4,z=5;则表达式!(x+y)+z-1&&y+z/2的值是

来源:百度知道 编辑:UC知道 时间:2024/06/21 22:27:31
要求说具体算法

这里涉及到的运算符: ! () + - && /
优先级:() ! / + - &&

x=3,y=4,z=5
!(x+y)+z-1&&y+z/2

!(3+4)+5-1&&4+5/2

所以表达式计算步骤为
!(3+4)+5-1&&4+5/2 -> !7+5-1&&4+5/2

!7为 0
-> 0+5-1&&4+5/2
5/2 整数除整数得整数 2
-> 0+5-1&&4+2
-> 4&&6
逻辑运算 &&

所以是1

C++ 运算符优先级列表 (很详细的): http://www.cppblog.com/aqazero/archive/2006/06/08/8284.html

C语言的优先级(从上到下依次递减):
醋-初等,4个: ( ) [ ] -> 指向结构体成员 . 结构体成员
坛-单目,9个: ! ~ ++ -- -负号 (类型) *指针 &取地址 sizeof长度
酸-算术,5个: * / % + -减
味-位移,2个: << >>
灌-关系,6个: < <= > >= == 等于 != 不等于
味-位逻,3个: & 按位与 ^ 按位异或 | 按位或
落-逻辑,2个: && 逻辑与 || 逻辑或
跳-条件,1个,三目: ? :
福-赋值,11个: = += -= *= /= %= >>= <<= &= ^= |=
豆-逗号,1个: ,

你可以发现算术运算符高于逻辑运算符,而非!高于算术运算符。
所以该表达式可以等于((!(x+y))+