小编nic*_*ick的帖子

为什么1024*1024*1024*2!= 1024*1024*1024*2

在开始时,我写了一个演示来获得2G内存,但我遇到了这样的问题,我不知道为什么,num1,num2,num3有什么不同?

#include<stdio.h>
int main(){
    unsigned long num1 = 1024*1024*1024*2;
    unsigned long num2 = 1024*1024*1024*2.0;
    unsigned long num3 = 1024*1024*1024;
    num3 *= 2;
    printf("num1:%lu\n num2:%lu\n num3:%lu\n", num1, num2, num3);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

num1:18446744071562067968
num2:2147483648
num3:2147483648
Run Code Online (Sandbox Code Playgroud)

c integer-overflow

3
推荐指数
1
解决办法
416
查看次数

标签 统计

c ×1

integer-overflow ×1