gpt4 book ai didi

c - C 中的决策 - ? : Operator example

转载 作者:太空狗 更新时间:2023-10-29 15:50:02 25 4
gpt4 key购买 nike

我知道运算符是如何工作的,但我不明白下面代码中的第二种情况是如何给出 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被评估为 true 上面的表达式导致 1 .


声明

int x = MIN(1,2) + 1; 

扩展后的结果

int x = 1<2 ? 1:2 + 1;

运营商+优先级高于三元运算符 :? , 所以下面的表达式实际上等同于

1<2 ? 1:(2 + 1);

关于c - C 中的决策 - ? : Operator example,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45611047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com