下面的代碼打印爲1030432081
(這是錯誤的)編譯時使用gcc -m32 time.c
,而編譯時沒有-m32
標誌時它工作正常。有什麼辦法可以讓這個工作?如何使用uint64_t和-m32?
#include <sys/time.h>
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>
void test() {
struct timeval t;
gettimeofday(&t, NULL);
uint64_t microseconds = t.tv_usec + t.tv_sec * 1000000;
printf("%"PRId64, microseconds);
}
int main() {
test();
}
'(uint64_t)1000000' –
解決了這個問題。你能解釋爲什麼嗎? (如果你願意,可以將它作爲答案) – ben