panzhengwang 发表于 2022-7-3 17:49:10

运算等级,求解惑

#include <stdio.h>
void main()
{
        char c = 'k';
        int i = 1, j = 2, k = 3;
        float x = 3e+5, y = 0.85;
        printf("%d,%d\n", 'a'+5<5, -i-2*j>=k+1);
        printf("%d,%d\n", 1<5<5, x-5.25<=x+y);
        printf("%d,%d\n", i+j+k==-2*j, k==j==i+5); //根据运算符的优先等级为什么不是先运算i+5?
   
}
k==j==i+5;
老师视频里面讲先运算K==j,
这是一个嵌套的表达式,
前面讲
+的运算等级大于==,
我觉得应该先求i+5的值
然后再比较k==j

风车呼呼呼 发表于 2022-7-3 17:57:44

运算符优先级只用于限定相邻运算符的运算顺序。
k==j==i+5; 总共三个运算符。后两个运算符优先级限制了第二个 == 运算前必须先运算 + ,但并不影响第一个 == 的运算,第一个 == 附近并不存在优先级比它高的运算符

ExiaGN001 发表于 2022-7-3 21:35:39

顺序:
先按优先级高来
同级从左到右
表达式计算顺序:
k==j
i+5
(k==j的结果)==(i+5的结果)
页: [1]
查看完整版本: 运算等级,求解惑