我試圖打印time_t而不只是在Microsoft Visual Studio項目中詮釋它,它給我意想不到的結果。源代碼是打印time_t長整型沒有鑄造給出了意想不到的行爲
#include <time.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/timeb.h>
#include <string.h>
int main()
{
int a=1,b=2;
long int c=3;
time_t myTime;
time(&myTime);
printf("%d_%ld_%d_%ld",a,myTime,b,c);
printf("\n");
getchar();
return 0;
}
輸出是1_1389610399_0_2
。這在我的linux機器上運行良好。我明白,time_t不應該打印這樣,但我不知道爲什麼?請告訴我如何調試這樣的問題?
編輯:我期待的輸出爲1_1389610399_2_3
給誰說time_t
是long
的事實,time_t
在C.
我不明白你在問什麼。你知道你打印錯誤,但不知道爲什麼它不符合你的期望?你想要什麼輸出? – BoBTFish
C中的time_t類型被認爲是算術類型。所以,預期的輸出應該是類似於1_1389610399_2_3。我不明白爲什麼產量會以即將到來的方式出現。 – Abhishek
@Abhishek:從結果看(我沒有檢查過文檔),'time_t'在Windows上是'long long',這很明智。當你將錯誤類型作爲可變參數傳遞時,事情就會出錯。 –