#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;
}
この事は印刷します
8
1341143123970
1341143123970
私の64ビットマシンでは、
8
1113191712
1113191712
私の32ビットサーバーで。2番目の結果は明らかに32ビット数にクランプされていますが、unsigned longlongintは両方のアーキテクチャで8バイトです。そのときクランプはどこで起こっているのですか、そしてその理由は何ですか?