gpt4 book ai didi

c - 编译器会在每个语句的多个比较中检查 UB 优先级吗?

转载 作者:太空宇宙 更新时间:2023-11-04 06:32:48 24 4
gpt4 key购买 nike

如果数组中只有 0,这段代码会导致未定义的行为吗?或者编译器可以对不太重要的条件进行一些检查,即“首先检查自动非指针值”

uiaDigit[10];

for (sizeIndexI = 0; sizeIndexI < 10 && uiaDigit[sizeIndexI] == 0; sizeIndexI++)
;

我猜好像是阅读方向之类的东西

“AND 比较总是从左到右读取,并在第一个 false 处中断”

至多是实现定义的行为,不是吗?

如果 sizeIndexI 得到 10,那么编译器是否会得到它无论如何都必须中断,或者他会比较 'uiaDigit[10] == 0' 吗?

最佳答案

对于 && 运算符,计算是从左到右进行的。所以如果你想跳过指针操作,把它放在表达式的最右边。

C 标准“6.5.13 逻辑与运算符”

4 Unlike the bitwise binary & operator, the && operator guarantees left-to-right evaluation; there is a sequence point after the evaluation of the first operand. If the first operand compares equal to 0, the second operand is not evaluated.

关于c - 编译器会在每个语句的多个比较中检查 UB 优先级吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18830667/

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