8、深入理解C语言中的算术类型

深入理解C语言中的算术类型

1. 整数类型相关要点

1.1 整数溢出问题

在某些系统中, abs 函数可能会返回错误值,因为 -INT_MIN 无法用有符号整数表示,其结果是由实现定义的。此外, ABS ABSM 类函数宏会多次计算其参数,当参数改变程序状态时可能会产生意外结果,这被称为副作用。而函数调用对每个参数仅计算一次。无符号整数有明确的回绕行为,有符号整数溢出或其可能性应始终被视为缺陷。

1.2 位精确整数类型

位精确整数类型允许指定整数的宽度,例如 _BitInt(32) 是有符号32位整数, unsigned _BitInt(32) 是无符号32位整数。其宽度可达 BITINT_MAXWIDTH 。位精确整数类型在许多应用领域很有用,比如:
- 密码学对称加密算法(如高级加密标准AES)中使用256位整数值。
- 计算安全哈希算法(SHA) - 256哈希值。
- 表示24位颜色空间。
- 描述网络或串行协议的布局。

在现场可编程门阵列(FPGA)编程中,使用普通整数类型对于小范围值且未使用全位宽的情况是极其浪费的,会导致严重的性能和空间问题。而FPGA可以支持宽整数,提供任意精度。在C23之前,程序员必须选择下一个更大尺寸的整数数据类型并手动执行掩码和移位操作,但这容易出错,因为整数宽度是由实现定义的。

有符号位精确整数类型表示为 _B

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值