编辑代码

#include <stdio.h>
int main () {
    /*
      整型数据
      short
        短整型 -32768~32767
        -2的15次方到2的15次方—1
      int
        整型 -2147483648~2147483647
        -2的31次方到2的31次方—1
        正负21亿
      long
        -2的63次方到2的63次方—1
        -9223 3720 3685 4775 808 ~
        9233 3720 3685 4775 807
       1.打印long类型数据时
         最好采用%ld进行打印
         %d只能打印在int范围内的数据
         如果超过int范围
         就需要使用%ld进行打印
       2.在计算long类型数据时
         需要首个数据末尾加上L或l
         以保证数据在超过int范围时
         不会出现溢出问题
         并且也是提醒底层运行环境
         采用long类型范围进行计算
    signed
        用于定义有符号的数据
        即正负 通常情况下可以省略不写
    unsigned
        用于定义无符号的数据即非负
        数据的最小值从0开始
        1.int类型数据
          由于从0变成极大值时
          超过了正常的的无符号int范围
          所以在打印时需采用%u进行打印
          才能正常显示无符号的数据
        2.long类型数据
           在采用%u打印时
           由于long类型也发生了溢出问题
           所以所以想展现出正常数据
           需采用%lu进行打印
    注意:
       1.除法问题
         整型数据在进行除法运算时
         会只保留整数部分
         直接舍弃小数部分
         而不是采用四舍五入的常规数学逻辑
       2.溢出问题
         当数据计算到极值情况时
         比极大值还大会向极小值进行反转
         比极小值还小会向极大值进行反转
    */
    short a = 32767;
    printf("a = %d\n", a);
    a = a + 1;
    printf("a = %d\n", a);
    int b = -2147483648;
    printf("b = %d\n", b);
    b = b - 1;
    printf("b = %d\n", b);
    long c = 2147483647;
    printf("c = %d\n", c);
    c = c + 1;
    printf("c = %ld\n", c);
    c = 2147483647 + 1L;
    printf("c = %ld\n", c);
    c = -9223372036854775808;
    printf("c = %ld\n", c);
    c = c - 1;
    printf("c = %ld\n", c);
    unsigned short d = 0;
    printf("d = %d\n", d);
    d = d - 1;
    printf("d = %d\n", d);
    d = 0 - 1;
    printf("d = %d\n", d);
    unsigned int e = 0;
    e = e - 1;
    printf("e = %d\n", e);
    printf("e = %ud\n", e);
    unsigned long f = 0;
    f = f - 1;
    printf("f = %u\n", f);
    printf("f = %lu\n", f);
    int a0 = 29, a1 = 10;
    int a2 = a0 / a1;
    printf("a2 = %d\n", a2);
    return 0;
}