prev up next   top/contents search

comp.lang.c FAQ 列表· 问题 13.14b

C 语言有 Y2K 问题吗?


没有,尽管写得不好的 C 程序可能会有问题。

tm_year字段struct tm存储的是年份减去 1900 的值;因此,该字段在 2000 年时包含 100。正确使用tm_year(在转换为或从人类可读的 4 位数字年份表示进行转换时加上或减去 1900)的代码在千禧年之交没有问题。任何使用tm_year不当的代码,例如将其直接用作人类可读的 2 位数字年份,或使用如下代码从 4 位数字年份设置它

	tm.tm_year = yyyy % 100;	/* WRONG */
或使用如下代码将其打印为声称可读的 4 位数字年份
	printf("19%d", tm.tm_year);	/* WRONG */
确实会遇到严重的 Y2K 问题。另请参阅问题 20.32

(Y2K 问题现在大部分是历史遗留问题了;我们剩下要做的就是修复到 2038 年的所有 32 位time_t问题……)

参考:K&R2 B10 节 第 255 页
ISO 7.12.1 节
H&S 18.4 节 第 401 页


prev up next   contents search
关于此 FAQ 列表   关于 Eskimo   搜索   反馈   版权

Eskimo North 托管