整型是一等公民?
大部分编程语言都将整型int(64位对应long)作为一等公民,从硬件的角度,int或者long也与寄存器位数一致(至少可兼容),这样访问起来方便快捷有效。
你还想知道:有符号和无符号数 基本数据类型 int和long的区别
有符号和无符号数
不同语言有无符号数
- C/C++标准未规定char类型是否是有符号,也可能是unsigned.
- GCC编译参数-fsigned-char和-funsigned-char指定char符号。
- Java/C# char类型均为Unicode字符,都是无符号类型。
- C# byte和sbyte与C语言signed char和unsigned char对应。
- wchar_t必然是无符号类型。
- 整型一般都有无符号和有符号之分,注意一个特别之处C/C++格式串%o和%x仅仅代表无符号数。
不同语言的无符号数形式
- C/Obj/C++/C#: unsigned
数值字面量后缀u或U: 12U, 0x12U
如果是无符号长整型,后缀是ul或UL,不过uL或者Ul也可以。
- 仓颉:类型前面加上U前缀
类型:UInt8 / UInt16 / UInt32 / UInt64 / UIntNative
数值字面量后缀:i8, i16, i32, i64, u8, u16, u32, u64- 例如12i16
int和long的区别
作为基本类型,一般而言,编译器对于int和long的大小设计是不同的。尤其是16位系统演变成32位系统和32位系统演变成64位系统,差异尤为明显。编译器为32位系统一般定义int为4字节,long同样为4字节。对于64位系统,long会提升为64位以与寄存器长度一致。
若文章对您有帮助,欢迎关注。助您在编程路上越走越好!
微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。
我是程序员小迷(致力于C、C++、Java、Kotlin、Android、iOS、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。