对于千年虫,学习过计算机基本理论的同学应该都不陌生了,它曾经引起了全世界人民共同关注,并且对当年世界造成了广而深的影响,是计算机历史中的一个大事件。引用互动百科对“千年虫”的解释:
所谓千年虫,泛指由于各种原因,计算机时钟系统不能在1999年以后正确计时,从而导致软件或硬件系统不能正常工作甚至发生崩溃。这里主要是一个两位计年(比如:99年)到四位计年(2000年)转化的问题,由此引发在PC机、收款机、工控机等等计算机控制系统上不可预料的操作故障。
所谓千年虫,其实说白了就是变量溢出问题,当数值超出了当前变量类型所能表示的范围就会发生溢出,下面将会举例说明容易发生变量溢出的一些场合和原因,以及在选择变量类型时需要注意的地方。
在《C陷阱和缺陷》中介绍了C函数库中的fgetc、getc、getchar几个函数的一个缺陷,很多初学者在使用前面提到的几个函数时,都可能会写出下面的代码:
char ch;
while ((ch = fgetc(fp)) != EOF)
{
putchar(ch);
}
fgetc等函数返回指是int类型,上