C语言——数据类型

一. 数据类型
  1.  C语言支持的数据类型
      1)  基础类型
           1.1)   数值类型   
                1.1.1   整型  --> 有符号(signed) --> 无符号(unsigned)    4 Bytes
                           短整型  (short / short int)                                      2 Bytes 
                           基础整型(int)                                                         4 Bytes 
                           长整型(long /long int)                                            4 / 8 Bytes(32位操作系统占                                                                                            用 4Bytes,64位操作系统中占用8Bytes)
                1.1.2   浮点型
                           单精度浮点型   (float)
                           双精度浮点型   (double)
         1.2)   字符类型  (char)

      2)  指针类型
      3)  空类型  (void)
      4)  构造类型 (自定义类型)
              4.1   结构体        (struct )
              4.2   联合体/共用体 (union )
              4.3   枚举类型      (enum ) 

   2. C语言中数据的表现形式
      2.1   常量  (程序运行过程中,取值无法改变的数据)
            分类:
            1)  整型常量
              表现形式:
          十进制:   0~9
          八进制:   0开头,数码 0~7
          十六进制: 0x开头,数码 0~9 A~F    

          进制转换方法:
             其他进制 ->  十进制:    按权相加      
             十进制 ->  其他进制:    辗转相除法:将需要转换的数据不停的除以转换的进制数,直到                                                                            商为0,反向记录余数。
             八机制 --> 十六进制:  借助于二进制,将八进制数据按位将该位上的数转换为 3位的二                                                       进制数,转换完成后,由右向左每4位为一组,将每一组的数据转                                                    换为1位的十六进制数据。
                                     
                     十六机制 -->八进制:     借助于二进制,将十六进制数据按位将该位上的数转换为                                                                4位的二进制数,转换完成后,由右向左每3位为一组,将                                                                每一组的数据转换为1位的八进制数据。
        2)  浮点型常量
             表现形式:
             2.1   十进制方式的小数:      123.3 ...    0.123
             2.2   指数形式:              1.233E2      1.23E-1
                         E(e) 之前必须是数字,之后必须是整数
         针对浮点型常量,如何区分单精度还是双精度:
                    单精度浮点型常量可以用f做后缀, 双精度浮点型常量可以用l做后缀

        3)  字符常量
               字符常量: 用 ' ' 括起来的一个字符,或者一个转义字符
               字符串常量: 用 " " 括起来的一个字符序列。
                                     系统会为字符串常量自动添加 '\0' 作为结束符。
        4)  符号常量
                  符号常量的定义格式:
                              #define  符号常量名   常量数据 
              优点:
                       1.  增加程序可读性(含义清楚,见名知义)
                       2.  增加可维护性   (一改全改)

           注意:符号常量不占用内存空间,这里小编来解释一下为什么符号常量不占用内存空间?

                      这是因为符号常量只是一个临时符号,代表一个值,在预编译后这个符号就不存在                          了,故不能对符号常量赋新值。
            
      2.2   变量  (表面理解:程序运行过程中,取值可以改变的数据)

            实质:  变量其实代表了一块内存区域。变量名可视为该内存区域的标识。
                         对该内存区域的访问就可以借助变量这个标识来进行。 

        变量的定义格式:
                          数据类型   变量列表;

        变量的命名规范:
                     1.  变量名可由数字、字母、下划线组成,但是不能以数字开头,只能以字母或下划                               线开头;
                     2.  变量名不能与系统中已有的标识符重名。

       说明:
        1. 变量定义时,利用同一个类型标识符可同时定义多个变量,各变量之间用  ,分隔:
           例如: int   a;     int  a,b,c,d,e;                
        2. 定义变量后,如果未对变量进行初值的赋予,则变量所代表的内存空间中的数据是随机                  的;
        3. 可以在变量定义的同时给变量赋值,这个操作称为变量的初始化,C语言允许对变量进行                初始化操作;
            例如:int   a = 0;   
        4.  初始化变量时,尽量做到类型相同    例如:  long l = 567l;

        5.  整型数据在内存中的存放方式:
             按照补码方式存放;

                     正整数的补码就是将该数据转换为二进制格式;
                     负整数的补码就是将该数据的绝对值转换为二进制格式,按位取反,并+1;

         6.  浮点型数据在内存中的存放方式
                采用指数方式存放:

             float :    1              8                23                       偏移量
                         符号位     指数位      尾数部分                    127

             double :    1            11            52                       偏移量
                         符号位        指数位     尾数部分                 1023
                  
                  例: 将 27.5 以 float 类型存放:

             27.5的二进制为11011.1       指数表示法:  1.10111*2^4
                     指数:4,加上127(偏移量),就是131,其二进制为 1000 0011,也就是说指数位数据为 1000 0011,
                     尾数(小数点后的数)10111,补够23位 1011 1000 0000 0000 0000 000

             所以 单精度浮点型数据27.5 在内存中存储方式如下:

                    0    1000 0011    1011 1000 0000 0000 0000 000

             注意: 浮点型数据在内存中存放是一个近似值
     7. 字符数据在内存中的存放方式
         以ASCII 码存放。

     8. 不同数值类型之前的混过运算:
          规则: 需要转换为同一类型后运算:
                  
          类型转换: 1.  隐式类型转换   (编译系统完成)
                                      转换规则: 低优先级类型向高优先级类型转换:
                             2.  强制类型转换   (程序员自己实现)
                                      语法格式:
                                       (目标类型) 待转换数据;

               原则: 类型转换并不改变原变量的类型;
 
     3. C语言中数据的运算 (运算符)
        

     3.1  算术运算符(+ - * / %)
           注意:1.   / :  如果操作数均为整型,则结果只取整数部分。
                      2.   % : 只能应用于整型类型 
     3.2  关系运算符(>  <  >=  <=  ==  !=)
     3.3  逻辑运算符(&&  ||   !)
     3.4  赋值运算符(=  +=  -=  *=   /=  %=)

     3.5  位运算符     

           & ------ 按位与          |  ------ 按位或           ^ ------ 按位异或 
            <<------左移             >>------ 右移             ~  ------ 按位取反(0变1,1变0)

 3.6  其他

     运算符根据运算对象的个数不同,分为:

     单目运算符   ++    --
     双目运算符   + -
     三目运算符   ?  :

     3. C语言中运算符的优先级与结合性
         
        算术运算符 >  关系运算符 > 逻辑运算符 > 赋值运算符

其中逻辑运算符中  “非”(!)的优先级在所有运算符中最高    

关注: 自增++  自减-- 
           
             前置(++i):表示在使用该运算对象之前使先它的值增1或减1,然后再使用它,即使用的                 是增1或减1后的值
         后置(i++):表示在使用该运算对象之后才使它的值增1或减1,即使用的是增1或减1前的值。

     4.  表达式:
       利用运算符连接数据形成的符合C语言规则的算式,就称为表达式;


     5.  逗号运算符: 

          面试题:  int  a;
                 a = 3,4,6,8;   则 a = ?,若想让a的取值为8,该条语句如何写?

                           a=3,若要a=8,则   int a;  a=(3,4,6,8);
      
            

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值