day02-常量和变量

常量:不会变化的数据。不能被修改。

    1. “hello”、'A'、-10、3.1415926(浮点常量)    

    2. #define PI 3.1415    【强调】:没有分号结束标记。 【推荐】 定义宏: 定义语法: #define 宏名 宏值

    3. const int a = 10;    定义语法:const 类型名 变量名 = 变量值。

        const关键字: 被该关键字修饰的变量,表示为只读变量。


变量:会变化的数据。能被修改。

    定义语法:类型名 变量名 = 变量值。(一般方法)

    变量三要素:类型名、变量名、变量值。    int r = 3;    float s = PI*r*r;(变量值是一个表达式)

    变量的定义:    int a = 40;

    变量的声明:    1) int a;     没有变量值的变量定义 叫做声明。

            2)extern int a; 添加了关键字 extern。

    1. 变量定义会开辟内存空间。变量声明不会开辟内存空间。

    2. 变量要想使用必须有定义。

        当编译器编译程序时,在变量使用之前,必须要看到变量定义。如果没有看到变量定义,编译器会自动找寻一个变量声明提升成为定义。
    
        如果该变量的声明前有 extern 关键字,无法提升。


    【建议】:定义变量时。尽量不要重名。

标识符:

    变量和常量的统称。

    命名规则:    1. 通常常量使用大写、变量使用小写。大小写严格区分。

            2. 只能使用字母、数组、下划线(_)命名标识符。且,数字不能开头。 a-z/A-Z/0-9/_

                int a5ir = 10; ok

                int _34F = 6; ok

                float s2_i85c = 5.4;  ok

                int 98ti_54 = 4;  error.

            3. 禁止使用关键字和系统函数作为标识符名称。  main/system/printf/sleep....

sizeof关键字:

    不是函数。用来求一个变量、类型的大小。 返回一个 无符号整数。 使用 %u 接收返回值。

    方法1: sizeof(类型名)    -- sizeof(int)

    方法2: sizeof(变量名)        --- int a = 20; sizeof(a)

    【了解】: sizeof 变量名/类型名        举例1: sizeof int

                        举例2: sizeof a

有符号整型:

    signed: 有符号 (超级不常用, 通常省略):        int a = 10; a = -7;    

    int类型:    %d        4 字节            

        int 名 = 值;

    short类型:    %hd        2 字节

        short 名 = 值;        short s1 = 3;

    long类型:    %ld        4 字节        (windows: 32/64: 4字节; Linux:32位:4字节, 64位:8字节)    

        long 名 = 值;        long len = 6;

    long long 类型:%lld        8 字节

        long long 名= 值;    long long llen = 70;


无符号整型:

    unsigned: 无符号         只表示数据量,而没有方向(没有正负)    

    unsigned int类型:    %u        4 字节

        unsigned int 名 = 值;    
        
        unsigned int a = 40;        

    unsigned short类型:    %hu        2 字节

        unsigned short 名 = 值;        

        unsigned short s1 = 3;

    unsigned long类型:    %lu        4 字节 (windows: 32/64: 4字节; Linux:32位:4字节, 64位:8字节)

        unsigned long 名 = 值;        

        unsigned long len = 6;

    unsigned long long 类型:%llu        8 字节

        unsigned long long 名 = 值;    

        unsigned long long llen = 70;

    
char字符类型:1字节

    存储一个字符。本质是ASCII码。 ‘A’、‘a’、‘%’、‘#’、‘0’

    格式匹配符: %c

    ‘A’:65

    ‘a’:97

    ‘0’:48

    ‘\n’:10

    ‘\0’: 0

    
转义字符:

    ‘\’    将普通字符转为 特殊意。 将特殊字符转为本身意。

    '\n' 和 ‘\0’


实型(浮点数、小数):

    float:    单精度浮点型。        4字节

        float v1 = 4.345;

        %f格式匹配符。 默认保留 6 位小数。

    double:双精度浮点型。        8字节        【默认】

        double v2 = 5.678;

    unsigned float v1 = 4.345;    无符号的 float 数据

    unsigned double v2 = 5.678;    无符号的 float 数据

    printf("n = %08.3f\n", n);

        输出的含义为:显示8位数(包含小数点), 不足8位用0填充。并且保留3位小数。对第4位做四舍五入。


进制和转换:

    十进制转2进制。    --- 除2反向取余法。 【重点】

    十进制转8进制。    --- 除8反向取余法。

    十进制转16进制。--- 除16反向取余法。

        int a = 56;    -- 111000

        int b = 173;    -- 10101101

    2进制转10进制。

        2^10 = 1024

        2^9 = 512

        2^8 = 256

        2^7 = 128

        2^6 = 64

        2^5 = 32

        2^4 = 16

        2^3 = 8

        2^2 = 4

8进制:

    8进制转10进制。    

        定义8进制数语法:    

            056: 零开头,每位数0~7之间。    ---- 46

            0124:                 ---- 84

    8进制转2进制。

        按421码将每个八进制位展开。

            056:5--》 101。 6--》 110  。

                101110

            05326:5 --》 101。 3--》 011。 2--》 010。 6--》 110

    2进制转8进制:

        1 010 111 010 110:    012726

        自右向左,每3位一组,按421码转换。高位不足三位补0
    
16进制:

    语法: 以0x开头,每位 取 0-9/A-F/a-f

            A -- 10

            B -- 11

            C -- 12

            D -- 13

            E -- 14

            F -- 15
    16 -- 10:

        0x1A:  16+10 = 26

        0x13F:15+3x16+256 
    
    16 -- 2:

        0x1A:    00011010

        0x13F:    000100111111

    2 -- 16:

        0001 0011 1111:        13F

        自右向左,每4位一组,按8421码转换。高位不足三位补0

总结:

    int m = 0x15F4;

    int n = 345;

    int var = 010011; // 不允许。 不能给变量直接复制 二进制数据。

    输出格式:

        %d %u %o %x %hd %hu %ld %lu %lld %llu %c %f %lf

        %d %u %x %c %s 

存储知识:

    1 bit位  就是一个 二进制位

    一个字节 1B = 8bit位。 

    1KB = 1024B
        
    1MB = 1024KB

    1GB = 1024MB

    1TB = 1024GB


源码反码补码:【了解】

    源码:
        43 ->     00101011
        -43 --> 10101011

    反码:        
        43 ->     00101011
        -43 --> 10101011
            11010100
    
    补码:(现今计算机采用的存储形式)

        43 ->     00101011    : 正数不变
        -43 --> 11010101    : 负数,最高位表符号位, 其余取反+1
    
43-27 ==》 43 + -27

        
    人为规定: 10000000 --》 -128
      
-------------------------------------------------

    char 类型:1字节 8个bit位。 数值位有7个。   

        有符号: -2^7 --- 2^7-1  == -2^(8-1) -- 2(8-1) -1  

            --》 -128 ~ 127

        无符号: 0 ~ 2^8 -1 

            --》 0~255

        不要超出该数据类型的存储范围。


    short类型:2字节  16bit

        有符号: -2^15 --- 2^15-1  == -2^(16-1) -- 2(16-1) -1  

            --》 -32768 ~ 32767

        无符号: 0 ~ 2^8 -1 

            --》 0~65535        
    

    int 类型:4字节            -2^(32-1) -- 2^(32-1)-1

        有符号:

            --》 -2147483648 ~ 2147483647    

        无符号:        0~2^32 -1 

            --》 0~4294967295

    long类型:4字节

        有符号:

            --》 -2147483648 ~ 2147483647    

        无符号:        0~2^32 -1 

            --》 0~4294967295    

    longlong 类型:8字节


        有符号:
            --》 -2^(63) ~ 2^(63)-1    

        无符号:        

            --》 0~2^63-1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值