C++ 大于0xFFFFFF的无符号长
如果无符号长最大值为4294967295,测试程序如何生成4294967297C++ 大于0xFFFFFF的无符号长,c++,integer,overflow,sizeof,C++,Integer,Overflow,Sizeof,如果无符号长最大值为4294967295,测试程序如何生成4294967297 #包括 使用名称空间std; 无符号长毫秒差异(当时无符号长,现在无符号长){ 返回now
#包括
使用名称空间std;
无符号长毫秒差异(当时无符号长,现在无符号长){
返回now cout原因是编译器定义无符号长整型
的方式与定义无符号长整型
的方式相同:)
这是一个演示程序
#include <iostream>
#include <limits>
int main()
{
std::cout << "sizeof( unsigned long ) = " << sizeof( unsigned long ) << '\n';
std::cout << "The maximum values is " << std::numeric_limits<unsigned long>::max() << '\n';
}
如果无符号长最大值为4294967295,测试程序如何生成4294967297
考虑到这个前提,它不能
但是,无法保证无符号长
最大值正好是4'294'967'295,因此您的前提可能无效。该最大值对应于32位数字可以表示的最大值。32是(无符号长
)长
所需的最小宽度,但它可能比这更宽
特别是,对于一些64位系统来说,有64个比特的<代码>未签名的长< /代码>,它的最大值为18’46'74’07'709'551 '615.
“未签名的长最大值是4294967295”这是不正确的前提。C++给出了两种整数类型的保证。关于unsigned long
的唯一保证是它大于或等于unsigned int
。实际大小由实现定义。@EugeneX,整数大小表高度依赖于体系结构和ABI。它在所有平台上都不相同。有目标系统(通常是DPS)其中,char
可以是16位。在旧系统中,“字符”可以是6、7或9位,也可以是“字”(通常是int
)可以是18或36位。简言之,整数类型在规范中没有固定的大小,只有最小大小。请记住,即使char
可以是任意位数,sizeof(char)
将始终等于1
,谢谢您的描述,现在我将知道ulong是8字节长的…现在我将知道ulong是8字节长的
您知道在特定系统上它是8字节。这种假设在不是8字节的系统上不成立。@EugeneX不总是这样。标准仅保证它至少是32位。@EugeneX它取决于使用的编译器。一些实现将其大小定义为4字节,另一些定义为8字节。
sizeof( unsigned long ) = 8
The maximum values is 18446744073709551615