C++之一些事一些情--变量值的溢出问题

本文探讨了C++中变量溢出问题,以千年虫事件为背景,阐述了溢出的原理。通过举例分析了fgetc等函数在不同类型的变量间转换可能导致的错误,强调了在32位系统中将int类型转换为char类型时的数据截断风险。同时指出,无符号数赋值给有符号数也可能引发溢出。作者提醒开发者注意这些细节,避免因小失大,浪费调试时间。
摘要由CSDN通过智能技术生成

       对于千年虫,学习过计算机基本理论的同学应该都不陌生了,它曾经引起了全世界人民共同关注,并且对当年世界造成了广而深的影响,是计算机历史中的一个大事件。引用互动百科对“千年虫”的解释:

所谓千年虫,泛指由于各种原因,计算机时钟系统不能在1999年以后正确计时,从而导致软件或硬件系统不能正常工作甚至发生崩溃。这里主要是一个两位计年(比如:99年)到四位计年(2000年)转化的问题,由此引发在PC机、收款机、工控机等等计算机控制系统上不可预料的操作故障。

       所谓千年虫,其实说白了就是变量溢出问题,当数值超出了当前变量类型所能表示的范围就会发生溢出,下面将会举例说明容易发生变量溢出的一些场合和原因,以及在选择变量类型时需要注意的地方。

      在《C陷阱和缺陷》中介绍了C函数库中的fgetc、getc、getchar几个函数的一个缺陷,很多初学者在使用前面提到的几个函数时,都可能会写出下面的代码:

char ch;
while ((ch = fgetc(fp)) != EOF)
{
    putchar(ch);
}

      fgetc等函数返回指是int类型,上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值