本文主要是介绍【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
这篇关于【GNU笔记】【C扩展系列】双字整数 Double-Word Integers的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!