请个高手帮我讲解下下面这逻辑表达式的运算

来源:百度知道 编辑:UC知道 时间:2024/05/21 07:48:55
逻辑表达式 : 变量定义 :
char c1='a',c2='A';(c1,c2可看成整形,值分别为97、65)
int n1=65,n2=97;
float f1=3.0,f2=3.0001;

表达式 n1+32==n2&&n1==c2
我的理解: 根据运算的优先级 !优先于算术运算 优先于关系运算 有优先于&&优先于|| 表达式为 (((n1+32)==n2)==c2)&&n1 n1+32=n2 为1 (((n1+32)==n2)==c2)即1==c2 应为0 (((n1+32)==n2)==c2)&&n1即0&&n1应为0 所以最终表达式的值为0
但是为什么等于1呢

帮我讲解下

算术的优先级高于== ,==优先级高于&&
所以从左到右(n1+32==n2)&&(n1==c2)
&&左边是整形直接比较是1
&&右边 n1是整形 65 c2是大写字母A 值是65 所以也相等
最后化简了就是 1&&1 结果是1

附上C语言的运算附优先级顺口溜
醋坛酸味灌
味落跳福豆

共44个运算符

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

结合方向自右向左的只有三类:赋值、单目和三目
同一优先级的运算顺序由结合方向决定

((n1+32)==n2)&&(n1==c2)