C++ 有符号整数类型的最大值

C++ 有符号整数类型的最大值,c++,c,integer,signed,C++,C,Integer,Signed,保证为uintmax\u tpow2,sizeofTYPE*CHAR\u位-1-1的有符号整数类型的最大整数值 在C和C++中? < P> NO.< 整数类型允许有不影响值的填充位。例如,具有8个填充位的32位有符号整数类型的最大值为223-1或16777215,而不是231-1或2147483647 这在C标准中有明确规定。我在C++标准中没有找到类似的措辞,但是我认为C++也允许整数类型有填充位。 但是很少有编译器利用这个权限 为确定整数类型的最大值,使用定义在C++中的适当** max宏,

保证为uintmax\u tpow2,sizeofTYPE*CHAR\u位-1-1的有符号整数类型的最大整数值 在C和C++中?

< P> NO.< 整数类型允许有不影响值的填充位。例如,具有8个填充位的32位有符号整数类型的最大值为223-1或16777215,而不是231-1或2147483647

这在C标准中有明确规定。我在C++标准中没有找到类似的措辞,但是我认为C++也允许整数类型有填充位。 但是很少有编译器利用这个权限

为确定整数类型的最大值,使用定义在C++中的适当** max宏,使用CDHOWE的注释建议的STD::NeimCixLime::Max。 顺便说一句,pow函数不是表示您所询问的值的最佳方式。这是一个浮点函数,在某些情况下其结果可能不精确。

整数类型允许有不影响值的填充位。例如,具有8个填充位的32位有符号整数类型的最大值为223-1或16777215,而不是231-1或2147483647

这在C标准中有明确规定。我在C++标准中没有找到类似的措辞,但是我认为C++也允许整数类型有填充位。 但是很少有编译器利用这个权限

为确定整数类型的最大值,使用定义在C++中的适当** max宏,使用CDHOWE的注释建议的STD::NeimCixLime::Max。


顺便说一句,pow函数不是表示您所询问的值的最佳方式。它是一个浮点函数,在某些情况下其结果可能不精确。

它取决于最大整数值的含义

如果您询问是否保证特定实现将支持该最大值,答案是否定的

但是,如果您询问是否保证任何实现都不能超过该最大值,答案是肯定的

有符号整数中的正值最多可以有n-1个值位,其中n是数据类型中的位数。因此,2n-1-1是n位有符号整数的最大可能值


任何实现都不能有更高的最大值,但它们可以有更低的最大值。

这取决于您所说的最大整数值是什么意思

如果您询问是否保证特定实现将支持该最大值,答案是否定的

但是,如果您询问是否保证任何实现都不能超过该最大值,答案是肯定的

有符号整数中的正值最多可以有n-1个值位,其中n是数据类型中的位数。因此,2n-1-1是n位有符号整数的最大可能值



没有任何实现可以有更高的最大值,但它们可以有更低的最大值。

我不确定这是否回答了您的基本问题,但是C++中任何数值类型T的最大值是STD::NoimiCixLime::Max。@ CdHooee。现在仅仅知道最大值是没有帮助的。为了什么?也许如果你问这个问题,我们会更有帮助。这个问题有点像。@xiver77也许你需要问第二个问题,让你明白你到底需要知道什么。好吧,既然我问题中的陈述似乎是错误的,我需要找到另一条途径。事实上,我不确定这是否回答了你的根本问题,但是C++中任何数值类型T的最大值是STD::NoimiCiLime::Max。@ CdHooee。现在仅仅知道最大值是没有帮助的。为了什么?也许如果你问这个问题,我们会更有帮助。这个问题有点像。@xiver77也许你需要问第二个问题,让你明白你到底需要知道什么。好吧,既然我问题中的陈述似乎是错误的,我需要找到另一条途径。事实上,就这些。我还有一个问题!如果这是一个有符号整数类型的最大值,那么我的陈述是真的吗?@xiver77:我不知道你的意思。如果您询问的是受支持的最宽整数类型,则允许使用填充位,至少在C中是这样。我的意思是,一个奇怪的实现可以将16位有符号整数的最大值设为2^15+2000,而其最小值为-4,例如。@xiver77:至少在C中,有符号整数类型是对称的,除了可选的额外负值。未指定填充位。填充位的值不会影响该值,但可能会创建陷阱表示。在实践中,你是非常美的
NLI很乐意在没有填充位的情况下找到除2的补码以外的任何东西。@MSalters:对,它的实现定义了2的补码通常是最负的值还是1的补码和符号以及大小通常是-0的值是否是陷阱表示。在没有填充位的情况下,这些是唯一可能的陷阱表示。绝大多数现代系统使用2的补码,没有陷阱表示和填充位,因此有符号整数的范围是不对称的。其他任何东西都会很奇特,即使标准允许。我还有一个问题!如果这是一个有符号整数类型的最大值,那么我的陈述是真的吗?@xiver77:我不知道你的意思。如果您询问的是受支持的最宽整数类型,则允许使用填充位,至少在C中是这样。我的意思是,一个奇怪的实现可以将16位有符号整数的最大值设为2^15+2000,而其最小值为-4,例如。@xiver77:至少在C中,有符号整数类型是对称的,除了可选的额外负值。未指定填充位。填充位的值不会影响该值,但可能会创建陷阱表示。实际上,除了没有填充位的2的补码之外,几乎不可能找到任何东西。@mAlters:对,它的实现定义了2的补码通常是最负的值还是1的补码和符号以及大小通常是-0的值是否为陷阱表示。在没有填充位的情况下,这些是唯一可能的陷阱表示。绝大多数现代系统使用2的补码,没有陷阱表示和填充位,因此有符号整数的范围是不对称的。即使标准允许,其他任何东西都会非常奇特。