整型数据
 
一、整型常量的表示方法: “整型常量”即“整常数”。
 
在C语言中,整常数有三种形式表示:
 
十进制整数:
 
如:123、-456、4。
 
八进制整数,以0开头的数是八进制数。
 
如:0123表示八进制数123,即(123)8 ,用十进制表示为
1X82+2X81+3X80 =83,-011表示八进制数-11,即十进制数-9。
 
十六进制整数,以0x开头的数是十六进制数。
 
如:0x123,代表十六进制数123,即(123)16=1x162+2x161+3x160=291;
-0x12等于十进制数-18。
 
整型变量:
 
二、整型数据在内存中的存放形式:
 
数据在内存中是以“二进制”形式存放的。如果定义了一个整型变量i:
 
int i;/*定义为整型变量*/
i=10;/*给i赋以整数10*/
  
    我们大家都知道,十进制数10的二进制形式为1010, Turbo C 2.0和Turbo C++ 3.0为一个整型变量在内存中分配2个字节的存储单元(不同的编译系统为整型数据分配的字节数是不同的,Visual C++6.0则分配4个字节。)
 
(a)图是数据存放的示意图:
(b)图是数据在内存中实际存放的情况,用补码形式表示的:
             

            

    实际上,数值是以补码(complement)表示的。一个正整数的补码和该数的源码(即该数的二进制形式)相同。

    一个负数的补码如何进行求解呢?

    将该数的绝对值的二进制形式,按位取反在加1

    例如求-10的补码的方法是:

   <1>、取-10的绝对值10

   <2>10的绝对值的二进制形式为1010

   <3>、对1010按位取反得111111111111110101(一个整数占16位);

   <4>、再加1-10的补码是:111111111111110110,见下图所示:

               

    由上述可知:在存放整数的存储单元中,最左面的一位是表示符号的,该位为0,表示数值为正;该位为1则表示数值为负。

三、整型变量的分类:
  一个整型的变量值的范围为-215   ~ (215-1),即-32768  ~ 32767。
 
为了充分利用变量的值的范围,此时可以将变量定义为“无符号”类型。
 
整型变量的基本类型符为int。根据数值的范围将变量定义为:
 
基本整型:以int表示。
 
短整型:  以short int 表示,或以short表示。
 
长整型:  以long int表示,或以long表示。
 

归纳起来,总共有六种整型变量:

有符号基本整型  【signed】 int;
无符号基本整型   unsigned  int;
有符号短整型    【signed】short 【int】;
无符号短整型    【unsigned】short 【int】;
有符号长整型    【signed】 long 【int】;
无符号长整型    【unsigned】 long 【int】;
 
注意:
    上面的方括号表示其中的内容是可选的,既可以有,也可以没有。
   
    如果加上修饰符signed,则指定是“有符号数”。
   
    如果既不制定为signed,也不指定为unsigned,则隐含为有符号(signed)。
 
    实际上signed是完全可以不写的。
  
           如果不指定unsigned或指定signed,则存储单元中最高位代表符号(0为正,1为负)。

   如果指定unsigned,为无符号型,存储单元中全部二进制位用作存放数本身,而不包括符号。

   无符号型变量只能存放不带符号的整数,如:123,4678等,而不能存放负数,如:-123、-3。
 
    一个无符号整型变量中可以存放的正数的范围比一般整型变量中正数的范围扩大一倍。
 
    如果在程序中定义a和b两个变量:
    int a ;
    unsigned int b ;

 

 Turbo C / Turbo C++时整型的有关数据。

四、整型变量的定义:

   C语言程序中所有用到的变量都必须在程序中定义,即“强制类型定义”。

 
 例如:
 
 int a,b; (指定变量a,b为整型)
 unsigned short   c,d; (指定变量c,d为无符号短整型)
 long e,f; (指定变量e,f为长整型)
   
    对变量的定义一般是放在一个函数的开头部分的声明部分(也可以放在函数中某一段分程序内,但作用域只限它所在的分程序)。
 
例如:
整型变量的定义与使用:

 

 运行结果为:

     

注意:不同种类的整型数据可以进行算术运算。                       整型变量的溢出:

Turbo C Turbo C++中,一个int型的变量的最大允许值为32767,如果在加1,会出现什么情况呢?

例如:

 

   运行结果为:

 

 

   

五、整型常量的类型:
 
    一个整数,如果其值在-32768 ~ 32767范围内,认为它是int型,它可以赋值给int型和long int型变量。
   
    一个整数,如果其值超过了上述范围,而在-2147483648 ~ 2147483647范围内,则认为它是长整型,可以将它赋值给一个long int型变量。
  
    如果所用的C语言版本(如Turbo C)分配给short int 与int型数据在内存中占据的长度相同,则它的表数范围与int型相同。因此一个int型的常量同时也是short int型常量,可以赋值给int,short int;
 
    一个整常量后面加一个字母u和U,认为它是unsigned int,如12345u在内存中unsigned int规定的方式存放(存储单元中最高位不作为符号位,而用来存储数据)。如果写成-12345u,则先将-12345转换成其补码53191,然后按无符号数存储。
 
    在一个整型常量后面加一个字母l或L,则认为它是long int 型常量,例如123l、432L,0L等,这往往用于函数调用中。如果函数的形参为long int 型,则要求实参也为long int 。
 
 
注意:
十进制32768的二进制为000000000000000(15个0);十进制32767的二进制为111111111111111(15个1);十进制65535的二进制为1111111111111111(16个1);