
C语言的数值溢出问题(上)
发布日期:2021-05-08 01:16:34
浏览次数:7
分类:精选文章
本文共 593 字,大约阅读时间需要 1 分钟。
问题: 何时会发生自动类型转换?
在一个赋值语句中,当赋值运算符左侧变量的类型和右侧的表达式不一致时, 就会发生自动类型转换.
问题:自动类型转换的规则是什么?
将赋值运算符右侧表达式的类型自动转换为左侧表达式变量的类型.
问题: 在不同类型数据间赋值, 是安全的吗?
问题:何为数值溢出,为什么会发生数值溢出?
任何数据类型都只能用有限的位数来存储数据, 也就是说任何数据类型的数据表达范围都是有限的. 如果我们向变量赋以超出其表示范围的数据, 就会发生数值溢出现象(这可能导致灾难性的后果).
生活中数值溢出的例子:
整数的数值溢出:
[注]右侧数据为程序运行后所得结果.
有符号整数和无符号整数的区别:
有符号整数的最高位被解释为符号位(0 -> 正, 1-> 负), 而无符号整数的最高位被解释为数据位.
整数的上溢出现象:
[注]图中所示变量a的类型为无符号短整型.
[注]图中所示变量a在第二行中被解释为无符号整数, 在第三行中被解释为有符号整数.
[注]黄色区域第三行所示二进制数据为-32768的补码, 这是人为规定的.
[注]负数在内存中以补码形式存放.
整型数据到短整型数据过程中的数值丢失:
[注]int型变量在内存中占4个字节, 而short型变量在内存中占2个字节.
[注]short型变量只保留了int型变量的低两字节数据.
两个无符号短整型数据做减法运算:
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月14日 02时05分46秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Linux环境变量配置错误导致命令不能使用(杂谈)
2021-05-08
openstack安装(六)镜像glance服务安装
2021-05-08
openstack安装(九)网络服务的安装--控制节点
2021-05-08
shell编程(六)语言编码规范之(变量)
2021-05-08
linux杂谈之特殊字符的打印和在各种软件如何打出
2021-05-08
vim杂谈(三)之配色方案
2021-05-08
vim杂谈(五)之vim不加载~/.vimrc
2021-05-08
Linux杂谈之终端快捷键
2021-05-08
vimscript学习笔记(二)预备知识
2021-05-08
vimscript学习笔记(三)信息打印
2021-05-08
awk杂谈之数组习题
2021-05-08
Linux网络属性配置详解
2021-05-08
Python(三十)类的理解
2021-05-08
Extjs布局详解
2021-05-08
Android数据库
2021-05-08
C语言之指针再涉(二)
2021-05-08
application类
2021-05-08
Linux基础命令(十四)软件安装的后续
2021-05-08
Perl(二)Perl简介
2021-05-08