C语言基础二:数据类型、常量与变量

1、数据类型:
        基本数据类型:
                整型  :(unsigned)int(32位系统下占4个字节) (unsigned)short(2)    (unsigned)long(4)
                字符型:(unsigned)char(1个字节)
                实  型:
                    单精度  float(4)
                    双精度    double(8)
        构造数据类型:
                数组 int a[10]
                结构体 struct
                联合体 union
                枚举类型 enum
        指针类型     基本类型 *
        空类型   void 
            a)void *  通用指针
            b)void 函数返回值 不能返回数值
            c)void 函数参数  调用不需要传入任何实参
2.常量与变量
    2.1.常量:
        在运行过程不可改变的量
         整型常量:123
            1)以0开头的一系列数字组成8进制:例:0123   3*1+2*8+1*8*8
                0 1 2 3 4 5 6 7
            2)以0x开头的一系列数字 16进制 例:0xff      15+15*16 
                0 1 2 3 4 5..9 A(a) B(b) C(c) D(d) E(e) F(f)
                ex.用254转换成16进制
                ex.0100 1111 1111 1101    2进制化成16进制数 -----》0x4ffd
            3)其他的都是十进制
            字符型常量:
                在计算机中字符型常量是以ASCII存储,
                ASCII:每一个字符对应一个唯一的整数
              1)可打印输出的
                    'a' 'b'....
              2)不可打印输出的
                    以\开始的特殊转义字符
                    '\n':换行符  ex.以10进制、8进制、16进制输出'\n'
                    '\r':回车符
                    '\t':横向制表符 一个TAB
                    '\v':纵向制表符
                    '\?':一个问号
                    '\'':输出单引号
                    '\"':输出双引号
                    '\\':输出\
                    '\ooo'(一个o代表一位8进制数):输出这个8进制数对应的ASCII对应的符号
                    A 65 101
                    '\xhh'(一个h代表一个16进制数):输出这个16进制数对应的ASCII对应的符号
            字符串常量:例子"123"以'\0'结束                  
                        '123'//error
            浮点常量:
                以小数或者指数形式出现的实数
                a)以f(F)结束的float类型的小数   1.0f
                b)以l(L)结束的 long double 的小数     1.12L
                c)其他的都默认处理为double       12.1
                指数形式:
                    12.2e5   ====》12.2*10的5次方
                    e/E后面的数表示以10为底的指数 -12.4E-25    =====>-12.4*10(-25)

        2.2变量
            在运行中可以改变的量
            定义变量:数据类型  变量名;
                        数据类型:合法的类型即可
                        变量名:合法标识符(以字母数字下划线组成,必须以字母、下划线开头)
                        int 3#a;//error
                        先定义,后使用
                        
                        变量名:每一个变量名都会对应一个一个地址,在程序编译运行时,内存会给每个变量分内存空间
                        int  a=5;
            使用变量的情况:
                1)取值:通过变量名找到它对应的内存空间,然后把存储的内容取出来   b=a;
                2)存值:通过变量名找到它对应的内存空间,然后把值存储进相应的内存空间  b=5;
            每个变量名都有2种含义
            1)左值:作为存储地址
            2)右值:作为存储的内容     printf("%d",a);
            
            整型变量:
                定义:int a;short a;long a;
                1.存储:以2进制的补码形式存储
                    原码:
                        正数:最高位是符号位(0),其余为二进制数值位
                        负数:最高位是符号位(1),其余为二进制数值位
                    反码:
                        正数:就是原码
                        负数:符号位不变,其余取反0->1  1->0
                    补码:
                        正数:就是原码
                        负数:符号位不变,其余在原码形式上取反+1
                        以8位来表示存储:
                        13                           -13
                        原码: 0 000 1101           1 000 1101
                        反码: 0 000 1101           1 111 0010
                        补码: 0 000 1101           1 111 0011
                            ex.以8bit的形式计算127的原码、反码、补码 
                            ex.以16bit的形式计算-127的原码、反码、补码 
                                原码、反码、补码:1000 0000-1=0111 1111
                                -128补码   1000 0000 
                
                    2.有符号数和无符号数
                        用8位表示有符号数和无符号数
                                    无符号数的最高位表示数值位
                                    有符号数的最高位表示符号位
                        -13  1 111 0011:用32位表示一个负数的补码
                        char类型数据的表示范围:
                                最大值:0 111 1111
                                最小值:1 000 0000
                                -128 - 127
                        unsigned char:
                                最大值:1111 1111    255
                                最小值:0000 0000    0
                        short类型数据表示范围
                                最大值:0 111 1111 1111 1111   printf("%d",0x7fff);32767
                                最小值:1000 0000  0000 0000    -32768
                        unsigned short:
                                最大值:1111 1111 1111 1111 65535
                                最小值:0000 0000 0000 0000  0
                        ex.
                            int a=-13;
                            unsigned int b=a;
                            printf("%u",b);
                    3.赋值
                        长的赋值给短的:int --> char
                                    低字节直接拷贝,高字节不要啦
                                    int a=0x12345678;
                                    char b;
                                    b=a;
                                    printf("%0x",b);//
                        短的赋值给长的:
                            无符号数:高字节扩展成0 ,低字节直接拷贝
                            有符号数:高字节扩展成符号位,低字节直接拷贝
                        
                            char c=-3;
                            printf("%d",c);
                            printf("%u",c);
                            
                        
                4.浮点数的存储 float a;/double a;
                
 

猜你喜欢

转载自blog.csdn.net/qq_26128879/article/details/82820496