【GNU笔记】【C扩展系列】双字整数 Double-Word Integers

【GNU笔记】【C扩展系列】双字整数 Double-Word Integers

双字整数 Double-Word Integers

ISO C99和ISO C++11支持至少64位宽的整数的数据类型,作为扩展,GCC在C90和C++98模式下支持它们。对于有符号的整数,只需写long long int,对于无符号的整数,只需写unsigned long long int。要使一个整数常量成为long long int类型,需要在整数上添加后缀’LL’。要使一个整数常量成为 unsigned long long int类型,请在整数上添加后缀’ULL’。

你可以像其他整数类型一样在算术中使用这些类型。这些类型的加法、减法和按位布尔运算在所有类型的机器上都是开放式编码(open-coded)的。如果机器支持全字到双字的加宽乘法指令,则乘法是开放式编码的。除法和移位只有在提供特殊支持的机器上才是开放式编码的。非开放式编码的操作使用GCC附带的特殊库例程。

如果对没有函数原型的函数参数使用long long类型,可能会有一些隐患。如果一个函数期望它的参数是int类型,而你传递了一个long long int类型的值,就会造成混乱,因为调用者和子程序在参数的字节数上不一致。同样地,如果函数期望的是long long int,而你传递的却是int。避免这种问题的最好方法是使用原型。


[参考资料]

6.10 Double-Word Integers

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值