C中的决策 – ? :运算符示例

C中的决策 – ? :运算符示例,第1张

概述我知道运算符是如何工作的,但我不明白下面代码中的第二种情况如何给出1作为结果. #define MIN(a,b) a<b ? 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?不是不是”,表达式3被执行,我们得到:“ 我知道运算符是如何工作的,但我不明白下面代码中的第二种情况如何给出1作为结果.

#define MIN(a,b) a<b ? 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?不是不是”,表达式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);
总结

以上是内存溢出为你收集整理的C中的决策 – ? :运算符示例全部内容,希望文章能够帮你解决C中的决策 – ? :运算符示例所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1218591.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存