at the beginning, I write a demo to get 2G memory, but the I got a problem like this, I don't know why, what different of 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;
}
output:
num1:18446744071562067968
num2:2147483648
num3:2147483648