是记忆问题吗?C [代码块] [Windows]

Is the a memory issue? c++ [code blocks][Windows]

本文关键字:代码 Windows 记忆 问题      更新时间:2023-10-16

我的代码块可以编译下面的代码并运行良好:

unsigned long int a=100000000000;

我的代码块可以编译下面的代码,但是我的程序在我输入相同的数字(100000000000)后立即崩溃了:

unsigned long int a;
 cin>>a;

如何修复?为什么拳头一个人正在工作!为什么不第二种情况?

如果我输入的数字大于最大无符号长int尺寸!那为什么第一个工作?

没有理由在这里崩溃。

初始化会引起我编译器的警告,因为无符号的长度值截断,并且读取尝试只是导致失败的读取,并且不会更改变量的值。

代码(在32位机器上):

#include <iostream>
#include <iomanip>
using std::cin;
using std::cout;
using std::endl;
int main() {
    unsigned long int b=100000000000; // warning here
    unsigned long int a = 0;
    cin>>a;
    cout << "b:" << b << "(" << std::hex << b << ")" << " a:" << std::dec << a << endl;
    return 0;
}

输出如预期

b:1215752192(4876e800) a:0

因为作为我的架构上的ull 100000000000是0x174876e800,高阶字节已被截断...