gpt4 book ai didi

c++ - 是否从任何被视为未定义行为的整数中减去 INT_MIN?

转载 作者:搜寻专家 更新时间:2023-10-31 01:47:35 25 4
gpt4 key购买 nike

如果我有这样的事情怎么办:

int a = 20;
int min = INT_MIN;

if(-a - min)
//do something

如果正数大于 INT_MAX,则假设 INT_MIN。 min 是否会被编译器转换为类似于 -INT_MIN 中的 -min 之类的东西,它可能是未定义的?

最佳答案

您说得对,应用于 INT_MIN 的一元减号可以是未定义的,但这在您的示例中不会发生。

-a - min 被解析为 (-a) - min。变量min只涉及二进制减法,第一个操作数只需要严格为负数即可定义结果。

如果编译器将减法转换为其他东西,它有责任确保新版本始终计算与旧版本相同的东西。

关于c++ - 是否从任何被视为未定义行为的整数中减去 INT_MIN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19015444/

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