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同理,但具体怎么整的就完全不明白了…… 其实不是运算符有多高级,只是这个写代码的人吝啬使用括号,如果加一对括号,估计都能看懂:
(i < 2) ? (!i ? x : y) : x 整明白啦,感谢大家!!!
简写代码如下:
if(i<2){
if(!i){
x;
}else{
y;
}
}else{
x;
} (i < 2) ? !i ? x : y : x
这个翻译成if结构应该是
if (i < 2)
if (!i)
x;
else
y;
else
x; 三目运算哪里高级了 {:1_925:} 就是俩双目的套娃 plauger 发表于 2022-9-26 18:48
其实不是运算符有多高级,只是这个写代码的人吝啬使用括号,如果加一对括号,估计都能看懂:
(i < 2) ? (! ...
瞬间看懂了:lol :lol对三目运算符深恶痛绝,从来都是写 if,else,虽然啰嗦点,但是看起来负担小 不应该套娃。。套娃了也不加括号,不易理解而已。。 为什么要这种不容易理解的方式去写?因为这样运行快?还是文件小?
页:
[1]
2