C语言学习笔记(一):数据类型

目录

一,c语言的数据类型

二,常量

三,变量

四,整型数据在计算机中的存储方式(short, int,long ,long long ,char)  


一,c语言的数据类型


    有4大数据类型
    (1)基本类型:就是c语言已经帮我们定义好了,我们可以直接使用
        整型数据:用来保存整数的
        short (int)            //短整型
        int                    //整型
        long (int)            //长整型
        long long (int)        //长长整型
        表示的数据的范围不一样    
        在32位机器上    1字节 = 8bit
        short    ->2个字节
        int        ->4个字节
        long    ->4个字节
        long long    ->8个字节
        
        记不住怎么办?
        sizeof(***)    ->求***这个数据类型占几个字节
        sizeof(int) ->4
        int a = 5;
        sizeof(a); ->求a对应的类型占几个字节
        
        
        unsigned /signed
        表示无符号/有符号
        无符号:代表所有bit位都是数据位
        有符号:最高位代表符号位,0:正  1:负 。其余bit位代表数据位
        unsigned /signed是用来修饰数据类型的
        unsigned int  ->无符号整型
        signed int ->有符号整型
        如果省略,就默认是有符号,-》 int   <->    signed int
        字符型数据:用来保存字符
            char :在所有机器上都是占1个字节
            unsigned char ->无符号的字符型
        
        浮点型数据:用来保存小数
            单精度浮点型
                float 4个字节
            双精度浮点型
                double 8个字节
            
                long double 12个字节
                
    (2)构造类型:我们自己定义的类型
            数组
            结构体
            联合体(共用体)
            枚举
    (3)指针类型
    (4)空类型    void
        void在c语言中有三个地方用到
            1,void *     通用指针
            2,void func()
                {}
                代表这个函数不需要返回值
            3,int func(void)
                {}
                代表这个函数不需要参数
                如果一个函数不需要参数,我们一般会把void省略、
                int func()
                {}
                
    c语言的数据按是否可以修改(可写)分为两种
            常量(不可写)
            变量(可写)

二,常量


    在程序的运行过程中,不可以改变它的值,常量有多种类型
    (1)整型常量
        在代码中由一串数字组成(整数)
            以0开头的,由0-7这8个数字组成,为八进制:
                0123
                0456
                0678//error
            以0x/0X开头的,为十六进制:
                0-9
                a(A)-f(F)
                0xa : 10
                0xb : 11
                ....
                0xf : 15
                
            其他就是十进制
                123            ->没有后缀的,默认是int
                -1234
                123l        ->long int
                
            为什么没有二进制的常量呢?
                因为八进制,十进制,十六进制的数都可以转换为二进
                    
    (2)字符常量:    是用单引号''引起来的一个或多个字符的序列
            比如: 'a'  '4'在计算机中,字符的保存,保存的是字符对应的ascii码,
            而不是它的形状(保存不了形状)
            ascii码:把每一个字符和一个对应的数字相关联
            man ascii
   

       八进制    十进制    十六进制
       Oct   Dec   Hex   Char                        Oct   Dec   Hex   Char
       000   0     00    NUL '\0'                    100   64    40    @
       001   1     01    SOH (start of heading)      101   65    41    A
       002   2     02    STX (start of text)         102   66    42    B
       003   3     03    ETX (end of text)           103   67    43    C
       004   4     04    EOT (end of transmission)   104   68    44    D
       005   5     05    ENQ (enquiry)               105   69    45    E
       006   6     06    ACK (acknowledge)           106   70    46    F
       007   7     07    BEL '\a' (bell)             107   71    47    G
       010   8     08    BS  '\b' (backspace)        110   72    48    H
       011   9     09    HT  '\t' (horizontal tab)   111   73    49    I
       012   10    0A    LF  '\n' (new line)         112   74    4A    J
       013   11    0B    VT  '\v' (vertical tab)     113   75    4B    K
       014   12    0C    FF  '\f' (form feed)        114   76    4C    L
       015   13    0D    CR  '\r' (carriage ret)     115   77    4D    M
       016   14    0E    SO  (shift out)             116   78    4E    N
       017   15    0F    SI  (shift in)              117   79    4F    O
       020   16    10    DLE (data link escape)      120   80    50    P
       021   17    11    DC1 (device control 1)      121   81    51    Q
       022   18    12    DC2 (device control 2)      122   82    52    R
       023   19    13    DC3 (device control 3)      123   83    53    S
       024   20    14    DC4 (device control 4)      124   84    54    T
       025   21    15    NAK (negative ack.)         125   85    55    U

                
        'A'     -> 65
        假如你想保存这个字符A,其实不是保存'A'这个形状,而是保存了65这个整数
            (所以,其实char本质上是整型)
                
        字符:
            分为两种:
                普通字符:可以显示形状(键盘可以敲出来) 
                'a'  'b'   '3'
                转义字符:没有形状,但是有特殊的含义
                '\n'    ->换行
                '\r'    ->回车符
                '\t'    ->制表符    tab
                '\0'    ->空字符,用在字符串的末尾
                
            '\000' :由\开始,后面接一个,两个或三个八进制数字
                这些八进制数字是用来指定所期望的字符
                '\103'    -> 'C'
                
            '\xhh':由\x开头,后面跟一个或者两个十六进制的数字
                这些八进制数字是用来指定所期望的字符
                '\x43'    -> 'C'
                
            例子:打印字符C    
               

 char a = 'C';
 printf("%c\n",a);//%c用来打印字符
                
 char b = '\103';
 printf("%c\n",b);//%c用来打印字符
                
 char c = '\x43';
 printf("%c\n",c);//%c用来打印字符
                
 char d = 67;//直接用ascii码赋值
 printf("%c\n",d);    


                
        (3)浮点常量        -》小数
            后缀可以是f/F l/L
            f/F -> float
            l/L -> long double
            没有后缀-》默认为double
            
            1.4  ->double
            1.5l ->long double
            5.89f ->float
            
            0.12 整数部分可以省略 .12
            1.00 小数部分可以省略 1.
            科学计算法:
                由整数部分,小数点,小数部分,一个e/E,一个可选的带符号的整数,
                和一个可选的表示类型的后缀(f/F l/L)组成
                123.45    -》 1.2345*10^2 -> 1.2345e2
            
        (4)枚举常量
                
             


    
三,变量


    变量是指在程序的运行过程中,其值可以被修改
    变量会对应一个可读可写的内存单元
    int a;
    a = 10;
    .....
    a = 20;
    char c;
    float b;
    变量是用来保存数据的,那它肯定是需要内存空间的,需要多大呢?由变量的类型决定
        这个空间必须要是可读可写的,因为需要被修改
    所以,我们定义变量的时候,需要定义它的类型
    变量的定义格式:
        数据类型 变量名 [= 变量的初始值];  []代表可选
        如:
            int a;
            int b = 10;
    c语言的标识符:用来标识一个“对象的(变量,函数.....)”
        标识符只能由数字,字母下划线组成,并且不能以数字开头,并且不能是c语言的关键字
        c语言的关键字:在c语言中有了特殊的含义,比如int main return,printf......
        asd
        a_c
        a_5
        b_5_r
        %$##@//error
    变量名:和标识符的规则一样
            给这个空间(内存单元)取了一个名字
            
    变量的内存单元:
        用来保存这个变量数值的储存空间,这个储存空间会有一个编号(地址)
        
    变量的值:
        变量的储存单元里面的内容
        int c = 10;
    访问一个变量:

 int a = 10;
 int b;
 b = a;//把a的值拿出来并赋值给b        1
 a = 100;//把100这个数值保存到a对应的那个空间中去,会覆盖掉原来的值        2
 printf("a=%d\n",a);//把a的值拿出来并打印        3


        在c语言中,任何变量,都有且仅有两层含义
        1,代表变量的值:右值
            1,3
        2,代表变量的储存空间(地址):左值
            2
      

 
        
四,整型数据在计算机中的存储方式(short, int,long ,long long ,char)  

     
    整数在计算机中是以二进制的补码形式存在的
    原码:把它转化成二进制
            10 -》 1010
            
    补码:
        正数的补码就是它的原码
            

int a = 6;
0000 0000 0000 0000 0000 0000 0000 0110


        负数的补码是他 绝对值 的原码 取反 加一
          

  int a = -6;
  绝对值: 6
  绝对值的原码:0000 0000 0000 0000 0000 0000 0000 0110
  绝对值 的原码 取反:1111 1111 1111 1111 1111 1111 1111 1001
  绝对值 的原码 取反 加一:1111 1111 1111 1111 1111 1111 1111 1010
  -6的补码:1111 1111 1111 1111 1111 1111 1111 1010

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值