gpt4 book ai didi

c++ - 如何定义等于-2147483648的常量?

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

我有一段由脚本生成的代码,该代码涉及一些整数常量。我遇到了一个奇怪的问题:其中一个常量等于 -2147483648(最小有符号 int32),并且 Visual Studio 生成以下错误:一元减运算符应用于无符号类型,结果仍然unsigned (这特别奇怪,因为我没有启用将警告视为错误)。

显然,它看到一个不适合有符号类型的整数,将其设为无符号,然后才应用一元减号。我认为结果仍然是正确的,因为它将被转换为 int (这实际上是一个模板参数),但我想避免出现警告。这只是 VS 的一个功能还是标准对此有任何规定?

这是有问题的行:

typedef Proto_Int<-2147483648,32> Typeinfo_77;

最佳答案

在 C++ 中,负数存储为带 (-) 负号的正数。

这就是为什么 min int 被定义为,

#define INT_MIN (-2147483647 - 1)

对于 int C++ 不理解2147483648。因此,如果可能的话,您也可以将 2147483648 写为 (-2147483647 - 1)

关于c++ - 如何定义等于-2147483648的常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30194153/

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