gpt4 book ai didi

带整数的 C++ boolean 值

转载 作者:行者123 更新时间:2023-11-30 01:38:11 24 4
gpt4 key购买 nike

好吧,显然这个问题对于更有经验的人来说可能听起来很愚蠢,但是,对于以下几行,我得到的结果是 0:

int x = 2,
y = -2;

cout << (x++ - y && (--x + y));

我理解这意味着这两个表达式中的任何一个等于 0,但是如何呢?据我了解,这应该是 (3 && -1)?

还有一个小问题:x++ 到底什么时候生效?在同一表达式中的下一次 x 出现时,在同一行中的左移运算符之后,还是在下一个语句中?

谢谢!

最佳答案

As far as I understand, this should be (3 && -1)?

你理解错了:

第一个左侧被完全评估,因为它是逻辑 and 的短路评估所必需的(详情可见here)

x++ - y == 4 // as result of x++ == 2 so (2-(-2)), after that x == 3

结果是 true所以右侧被评估:

--x + y ==  0 // as result of --x == 2 so (2+(-2)), after that x == 2

右边的结果是false所以 and 的结果是false以及 std::ostream 打印的作为0

注:逻辑短路评估orand操作使此类代码有效(使它们排序),但您最好避免此类有问题的表达式。例如简单替换逻辑 and二进制会使它成为 UB。

关于带整数的 C++ boolean 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48468264/

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