gpt4 book ai didi

c++ - 有人可以解释这个 C++ 逗号运算符短路示例吗?

转载 作者:IT老高 更新时间:2023-10-28 23:10:39 25 4
gpt4 key购买 nike

有人能解释一下这个 C++ 逗号运算符短路示例吗?

bIsTRUE     = true, false, true;
bIsFALSE = (true, false), true;
bIsAlsoTRUE = ((true, false), true);

为什么第二个版本短路并返回false(至少在MSVC++中),而其他两个版本却不返回true

最佳答案

逗号运算符的优先级低于赋值,所以这些被解析为

(bIsTRUE     = true), false, true;     
(bIsFALSE = (true, false)), true;
(bIsAlsoTRUE = ((true, false), true));

逗号运算符不会短路。它计算左操作数,忽略结果,然后计算右操作数。

bIsTRUEtrue 因为赋值的右操作数是 true

bIsFALSEfalse 因为 (true, false) 评估 true,忽略结果,然后评估并产生 false

bIsAlsoTRUEtrue 因为 ((true, false), true) 评估 (true, false) ,忽略结果,然后计算并产生 true

关于c++ - 有人可以解释这个 C++ 逗号运算符短路示例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5877287/

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