C语⾔三种整数类型
1,int 是 C 语⾔的基本整数类型,可以满⾜我们处理⼀般数据的需求。
  C 语⾔还提供了四个可以修饰 int 的关键字:short、long、signed,以及 unsigned。
  利⽤这四个关键字,C 语⾔标准定义了以下整数类型:
名称全称类型说明符缩写类型说明符位数范围
整型int int16位-32768⾄+32767
⽆符号整型unsigned int unsigned16位0 ⾄ 65,535
短整型short int short16位-32768⾄+32767
⽆符号短整型unsigned short int    unsigned short16位0 ⾄ 65,535
长整型long int long32位-2,147,483,648 ⾄ 2,147,483,647
⽆符号长整型unsigned long int unsigned long32位0⾄4,294,967,295
2. 声明⽅式
这些整数类型的声明⽅式与 int 类型的声明⽅式⼀样。例如:
long int estine;
long johns;
short int erns;
short ribs;
unsigned int s_count;
unsigned players;
unsigned long headcount;
unsigned short yesvotes;
long long ago;  /* C99 特有 */
unsigned long long ego;  /* C99 特有 */
如果编译器不⽀持 C99 标准,那就不能使⽤ long long 和 unsigned long long。
3. 整数类型的选择
如果处理的只是⾮负整数,那么应该优先使⽤ unsigned 打头的那些整数类型。
如果处理的整数超出了 int 所能表⽰的范围,并且编译器中,long 的表⽰范围⽐ int ⼤,那就使⽤ long。
不过,若⾮必要,尽量不要⽤ long,因为它可能会降低程序运⾏效率。
手机上的c语言编译器怎么用有⼀点要注意:如果编译器中,long 和 int 都是 32 位的,并且您需要使⽤ 32 位整数,那么应该⽤ long,⽽不要⽤ int。
只有这样,程序才可以安全地移植到 16 位的计算机,因为 16 位的计算机中,int ⼀般也是 16 位的。
类似地,如果要使⽤ 64 位整数,那就⽤ long long。
如果 int 是 32 位的话,那么使⽤ short 可以节省空间,不过得确保您要处理的整数不会超出 short 的表
⽰范围。这种“节省”对内存⼤的计算机来说,是没什么意义的。
4. long 型常量和 long long 型常量
⼀般来说,整数常量是被当作 int 类型来存储的。
如果使⽤的整数常量超出了 int 的表⽰范围,C 语⾔规定编译器⾃动使⽤ unsigned int 来处理这个常量。
如果 unsigned 也不⾜以表⽰这个常量的话,编译器就会⽤ long。
如果还表⽰不了的话,那就依次⽤ unsigned long,long long,unsigned long long。
如果 unsigned long long 也表⽰不了,那么编译器就没辙了。
注意:long long 和 unsigned long long 是 C99 特有的。
例如:如果 int 是 16 位的话,它就表⽰不了常量 1000000。编译器会使⽤ long 来处理这个常量,因为 unsigned int 也表⽰不了 1000000 。
同样,⼗六进制和⼋进制整数常量通常也是被作为 int 来处理。但是,当我们使⽤的常量超出了 int 的表
⽰范围后,编译器会依次使⽤unsigned
int,long,unsigned long,long long 和 unsigned long long。直到所使⽤的类型⾜以表⽰那个常量为⽌。
有时,使⽤的是较⼩的常量,但是希望这个常量被当作 long 来处理,这就需要在这个常量后⾯加上后缀 l(⼩写字母 l)或者 L(⼤写字母 L)。
应该避免使⽤ l ,因为 l 容易和数字 1 混淆。
例如:整数常量 7 是被作为 int 来处理的,但整数常量 7L(或者 7l)是被作为 long 来处理的。
类似地,在整数常量后⾯加上后缀 ll 或者 LL ,这个常量就会被当作 long long 来处理。
例如:3LL 。如果想使⽤⽆符号整数常量的话,还要配合使⽤后缀 u 或者 U 。
例如:2u,3U,4Lu,5ul,6LU,7LLU,8Ull,9uLL 。
这些后缀也可以⽤于⼗六进制和⼋进制整数常量。例如:020L,010LL,0x30uL,0x40ull。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。