C中的决策 – ? :运算符示例
发布时间:2020-12-16 10:14:14 所属栏目:百科 来源:网络整理
导读:我知道运算符是如何工作的,但我不明白下面代码中的第二种情况如何给出1作为结果. #define MIN(a,b) ab ? a:b int x = MIN(1,2); //case 1,output is 1int x = MIN(1,1+1); // case 2 编译器不应该将此情况(情况2)看作“是1 1 1?”,我认为应该是“1 1?不是
我知道运算符是如何工作的,但我不明白下面代码中的第二种情况如何给出1作为结果.
#define MIN(a,b) a<b ? a:b int x = MIN(1,2); //case 1,output is 1 int x = MIN(1,1+1); // case 2 编译器不应该将此情况(情况2)看作“是1< 1 1?”,我认为应该是“1< 1?不是不是”,表达式3被执行,我们得到:“b”= 1 1 = 2.这是因为上面的宏中a和b周围没有括号,或者可能是因为我遵循自己的规则并感到迷茫?请帮忙.... 另外,你如何解释这个案例: int x = MIN(1,2) + 1; //should we consider the "1" on the right? 解决方法
你的第二个案子
MIN(1,1+1); 扩展到 1<1+1 ? 1:1+1; 由于1 <1被评估为真,因此上述表达式为1. 该声明 int x = MIN(1,2) + 1; 扩张后的结果 int x = 1<2 ? 1:2 + 1; 运算符的优先级高于三元运算符:?,所以下面的表达式实际上相当于 1<2 ? 1:(2 + 1); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |