美文网首页鲸落消零派
C语言-基本数据类型

C语言-基本数据类型

作者: 浮华_du | 来源:发表于2021-07-20 13:28 被阅读0次

    几篇文章复习C语言,摘录重点,仅用于个人学习~

    基本数据类型.png

    基本数据类型

    short、int、long、float、double、char这六个关键字代表C 语言里的六种基本数据类型。
    基本类型书写

    • 整数
      a,默认为10进制 ,10 ,20。
      b,以0开头为8进制,045,021。
      c.,以0b开头为2进制,0b11101101。
      d,以0x开头为16进制,0x21458adf。
    • 小数
      单精度常量:2.3f 。
      双精度常量:2.3,默认为双精度。
    • 字符型常量
      用英文单引号括起来,只保存一个字符'a'、'b' 、'*' ,还有转义字符 '\n' 、'\t'。
    • 字符串常量
      用英文的双引号引起来 可以保存多个字符:"abc"。

    字节长度

    在不同的系统上,这些类型占据的字节长度是不同的(1byte = 8bit):

    16位编译器:
    char/unsigned char :1字节
    char :2字节
    short int:2字节
    int/unsigned int:2字节
    long int:4字节
    float:4字节
    double:8字节*

    32位编译器:
    *char/unsigned char :1字节
    char :4字节
    short int:2字节
    int/unsigned int:4字节
    long int:4字节
    float:4字节
    double:8字节
    long long:8字节
    long double:12字节

    64位编译器:
    char/unsigned char :1字节
    char *:8字节
    short int:2字节
    int/unsigned int:4字节
    long int:8字节
    float:4字节
    double:8字节
    long long:8字节
    long double:16字节

    具体可以用sizeof测试一下即可。

    
    #include <stdio.h>
    
    int main(int argc, const char * argv[]) {
        printf("char==%lu\n",sizeof(char));
        printf("unsigned char==%lu\n",sizeof(unsigned char));
        printf("char *==%lu\n",sizeof(char *));
        printf("short int==%lu\n",sizeof(short int));
        printf("int==%lu\n",sizeof(int));
        printf("unsigned int==%lu\n",sizeof(unsigned int));
        printf("long int==%lu\n",sizeof(long int));
        printf("float==%lu\n",sizeof(float));
        printf("double==%lu\n",sizeof(double));
        printf("long long==%lu\n",sizeof(long long));
        printf("long double==%lu\n",sizeof(long double));
        return 0;
    }
    //char==1
    //unsigned char==1
    //char *==8
    //short int==2
    //int==4
    //unsigned int==4
    //long int==8
    //float==4
    //double==8
    //long long==8
    //long double==16
    

    整型

    int 一般占用 4 个字节(Byte)的内存,共计 32 位(Bit)。如果不考虑正负数,当所有的位都为 1 时它的值最大,为 232-1 = 4,294,967,295 ≈ 43亿
    让整数占用更少的内存可以在 int 前边加 short,让整数占用更多的内存可以在 int 前边加 long;short、int、long 是C语言中常见的整数类型,其中 int 称为整型,short 称为短整型,long 称为长整型。

    浮点型

    image.png
       printf("float 最小值: %E\n", FLT_MIN );
       printf("float 最大值: %E\n", FLT_MAX );
       printf("精度值: %d\n", FLT_DIG );
    

    https://www.runoob.com/w3cnote/float-and-double-different.html

    原码,反码,补码

    数值的表示方法——原码、反码和补码,在计算机系统中,数值一律用补码来存储.

    原码:最高位为符号位(0正,1负),其余各位为数值本身的绝对值
    反码:

    • 正数:反码与原码相同
    • 负数:符号位为1,其余位对原码取反

    补码:

    • 正数:原码、反码、补码相同
    • 负数:最高位为1,其余位为原码取反,再对整个数加1

    https://www.136.la/jingpin/show-64808.html

    #include <stdio.h>
    int main()
    {
       
        int x = -1;
    
        //int是四字节,1字节8位,所以-1有32位,最高位符号位
    
        //原码:1000 0000 0000 0000 0000 0000 0000 0001
    
        //反码:1111 1111 1111 1111 1111 1111 1111 1110
    
        //补码:1111 1111 1111 1111 1111 1111 1111 1111
    
        int y = 3;//正数原码,反码,补码全部相同
    
        //int是四字节,1字节8位,所以-1有32位,最高位符号位
    
        //原码:0000 0000 0000 0000 0000 0000 0000 0011
    
        //反码:0000 0000 0000 0000 0000 0000 0000 0011
    
        //补码:0000 0000 0000 0000 0000 0000 0000 0011
    
        //求x+y?
    
        //在计算机系统中,数值一律用补码来存储,
    
        //x的补码:1111 1111 1111 1111 1111 1111 1111 1111
    
        //y的补码:0000 0000 0000 0000 0000 0000 0000 0011
    
        //x+y :0000 0000 0000 0000 0000 0000 0000 0010 -----如果最高位(符号位)有进位,则进位被舍弃。
    
        //因此x+y=2
    
        printf("%d\n", x+y);
    
        //总结:负数:由补码获取源码<=>直接将补码减1,然后除去符号位全部取反
    
        return 0;
    }
    

    取值范围

    int 一般占用 4 个字节(Byte)的内存,共计 32 位(Bit),其中一位是符号位
    所以int取值范围 2147483648~2147483647 (-231~231-1)


    image.png

    类型转换

    类型转换规则.png

    不同类型数据之间的运算要注意精度扩展问题,一般低精度数据将向高精度数据扩展。

    交互

    在C语言中,有多个函数可以从键盘获得用户输入:
    scanf():和 printf() 类似,scanf() 可以输入多种类型的数据。%d
    getchar()、getche()、getch():这三个函数都用于输入单个字符。%c
    gets():获取一行数据,并作为字符串处理。%s

    #include <stdio.h>
    int main()
    {
        int a = 0, b = 0, c = 0, d = 0;
        scanf("%d", &a);  //输入整数并赋值给变量a
        scanf("%d", &b);  //输入整数并赋值给变量b
        printf("a+b=%d\n", a+b);  //计算a+b的值并输出
        scanf("%d %d", &c, &d);  //输入两个整数并分别赋值给c、d
        printf("c*d=%d\n", c*d);  //计算c*d的值并输出
    
        return 0;
    }
    //123
    //123
    //a+b=246
    

    相关文章

      网友评论

        本文标题:C语言-基本数据类型

        本文链接:https://www.haomeiwen.com/subject/fbpspltx.html