time_t實際上是乙個長整形的資料型別,用於記錄從2023年1月1日0時0分0秒(unix出現的時間)起到當前一共多少秒的時間記錄,然而對於time_t來說它表示的時間的最大值只能到2038 ,所以有一些廠商引入了64位甚至更長來儲存時間。
我們通過查詢標頭檔案time.h來觀察time_t的定義
#ifndef _time32_t_defined
typedef _w64 long __time32_t; /* 32-bit time value */
#define _time32_t_defined
#endif /* _time32_t_defined */
#ifndef _time64_t_defined
typedef __int64 __time64_t; /* 64-bit time value */
#define _time64_t_defined
#endif /* _time64_t_defined */
下面我們來使用time_t型別計算計算機的日期
#define _crt_secure_no_warnings
#include#include//計算機的日期
#if 0
#includeint main( )
#endif
//這是乙個錯誤的結果。ctime()將時間轉換成當地的時間。它和utc並不一致,我們應該採用gmtime()來取得時間的最大值
#if 0
#includeint main( )
//時間值發生了變化是因為時差的問題造成的時間差值 **紐西蘭的時區稱為該函式的乙個bug
//該函式計算時間採用了夏令時,紐西蘭位於南半球。但紐西蘭的最東邊在日界線的東面。他的時間應該比格林尼治//晚10小時而非早14小時!
對日期程式設計絕對不是一件很簡單的事,需要我們認真的斟酌!
《C 專家程式設計》讀書筆記
前言 程式設計挑戰 計算機日期 第二章 這不是bug,而是語言特徵 switch的乙個bug break中斷了什麼 第三章 分析c語言宣告 程式設計挑戰 把c 語言的宣告翻譯成通俗的語言 include include include include define max len 100 enum ...
《C專家程式設計》讀書筆記
第一章 const float 表示乙個指向float型別常量的指標 第二章 1.在c語言中const並非真正表示 常量 在陣列定義與case中不可以使用 2.case的一些問題 2 3 main 15 這段 列印出來的是 3.函式可見性 void sb any where 2 extern voi...
《C專家程式設計》讀書筆記9
第九章 再論陣列 宣告本身還可以進一步分成3種情況 外部宣告 external array 的宣告。陣列的定義 記住,定義是宣告的一種特殊情況,它分配記憶體空間,並可能提供乙個初始值 函式引數的宣告。所有作為函式引數的陣列名總是可以通過編譯器轉換為指標。作為函式定義的形式引數,char s和 cha...