吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 928|回复: 12
收起左侧

[求助] C++ ?三目运算符的嵌套使用

[复制链接]
zohoChou 发表于 2022-9-26 17:15
本帖最后由 zohoChou 于 2022-9-27 11:14 编辑

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

出自c++ primer plus 199页

上代码(已精简):
[C++] 纯文本查看 复制代码
const char *y = "22222";
    const char x[2][20] = {"11111", "33333\n"};
    for (int i = 0; i < 3; i++)
    {
        std::cout << ((i < 2) ? !i ? x[i] : y : x[1]) << std::endl;
    }


结果:
11111
22222
33333

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

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

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

免费评分

参与人数 1热心值 +1 收起 理由
zohoChou + 1 我很赞同!

查看全部评分

 楼主| zohoChou 发表于 2022-9-26 17:30
整明白啦,感谢大家!!!

简写代码如下:
if(i<2){
    if(!i){
        x[i];
    }else{
        y;
    }
}else{
    x[1];
}
onpure 发表于 2022-9-26 17:36
(i < 2) ? !i ? x : y : x[1]
这个翻译成if结构应该是


[C++] 纯文本查看 复制代码
if (i < 2)
	if (!i)
		x[i];
	else
		y;
else
	x[1];

免费评分

参与人数 1吾爱币 +1 收起 理由
zohoChou + 1 我很赞同!

查看全部评分

小小随 发表于 2022-9-26 18:54
三目运算哪里高级了
三滑稽甲苯 发表于 2022-9-26 20:28
就是俩双目的套娃
2370177068 发表于 2022-9-26 20:54
plauger 发表于 2022-9-26 18:48
其实不是运算符有多高级,只是这个写代码的人吝啬使用括号,如果加一对括号,估计都能看懂:
(i < 2) ? (! ...

瞬间看懂了
only998 发表于 2022-9-26 22:05
对三目运算符深恶痛绝,从来都是写 if,else,虽然啰嗦点,但是看起来负担小
Ariol 发表于 2022-9-27 08:44
不应该套娃。。套娃了也不加括号,不易理解而已。。
longzhuliu 发表于 2022-9-27 09:12
为什么要这种不容易理解的方式去写?因为这样运行快?还是文件小?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-3-28 19:02

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表