zohoChou 发表于 2022-9-26 17:15

C++ ?三目运算符的嵌套使用

本帖最后由 zohoChou 于 2022-9-27 11:14 编辑

对c++ primer plus深恶痛绝,当时应该买c++ primer的……这书啥解析都没有,光让你自己想想……

出自c++ primer plus 199页

上代码(已精简):
const char *y = "22222";
    const char x = {"11111", "33333\n"};
    for (int i = 0; i < 3; i++)
    {
      std::cout << ((i < 2) ? !i ? x : y : x) << std::endl;
    }

结果:
11111
22222
33333

求助原因:没看明白运算步骤,只能自己想明白当i = 0的时候,(i < 2) ? !i 这个整体是False,i = 1,2同理,但具体怎么整的就完全不明白了……

plauger 发表于 2022-9-26 18:48

其实不是运算符有多高级,只是这个写代码的人吝啬使用括号,如果加一对括号,估计都能看懂:
(i < 2) ? (!i ? x : y) : x

zohoChou 发表于 2022-9-26 17:30

整明白啦,感谢大家!!!

简写代码如下:
if(i<2){
    if(!i){
      x;
    }else{
      y;
    }
}else{
    x;
}

onpure 发表于 2022-9-26 17:36

(i < 2) ? !i ? x : y : x
这个翻译成if结构应该是


if (i < 2)
        if (!i)
                x;
        else
                y;
else
        x;

小小随 发表于 2022-9-26 18:54

三目运算哪里高级了 {:1_925:}

三滑稽甲苯 发表于 2022-9-26 20:28

就是俩双目的套娃

LXGZJ237 发表于 2022-9-26 20:54

plauger 发表于 2022-9-26 18:48
其实不是运算符有多高级,只是这个写代码的人吝啬使用括号,如果加一对括号,估计都能看懂:
(i < 2) ? (! ...

瞬间看懂了:lol

only998 发表于 2022-9-26 22:05

:lol对三目运算符深恶痛绝,从来都是写 if,else,虽然啰嗦点,但是看起来负担小

Ariol 发表于 2022-9-27 08:44

不应该套娃。。套娃了也不加括号,不易理解而已。。

longzhuliu 发表于 2022-9-27 09:12

为什么要这种不容易理解的方式去写?因为这样运行快?还是文件小?
页: [1] 2
查看完整版本: C++ ?三目运算符的嵌套使用