#include <ctime>
#include <cstdio>
#include <sys/time.h>
#include <iostream>
using namespace std;
int main() {
struct timeval tv;
gettimeofday(&tv, 0);
unsigned long long int var=tv.tv_sec*1000L+tv.tv_usec/1000L;
cout<<sizeof(var)<<endl;
cout<<var<<endl;
printf("%u%-15u\n", (unsigned int)(var/1000000000), (unsigned int)(var%1000000000));
return 0;
}
這件事打印我的32位服務器上整數類型大小問題
8
1341143123970
1341143123970
我的64位機器上,但
8
1113191712
1113191712
。第二個結果顯然是固定爲一個32位數字,但在兩種體系結構中,unsigned long long int都是8個字節。那麼夾緊發生在哪裏,爲什麼?
C和C++都不會考慮在決定如何計算時如何使用值。您將值保存在'unsigned long long int'中對計算方式有* no *影響。如果你使用'bool x','foo'的調用將是相同的。 x = foo(y);'或者如果你做'int x; x = foo(y);'或'float x; x = foo(y);'或其他。 –