2.C语言数据类型

0 阅读3分钟

C语言数据类型

数据类型

基本类型
  • 整形:
    • short 2字节,int4字节,long字节
  • 浮点型:
    • float单精度,dobule双精度
  • 字符型:
    • char

整形、浮点型都有 signed和unsigned(正数)
基本类型空间大小固定

构造类型
  • 数组:
    • 是一组相同类型的元素的集合
  • 结构体:
    • 是一组不同类型的集合
  • 共用体(联合体):
    • 一组不同类型的元素共用一段空间
  • 枚举:
    • 列举某个范围内值

注意:构造类型的内存大小是不固定的,取决于程序怎么去定义

指针类型

指针类型一般来说是指针变量:

  • 基本类型指针
  • 构造类型指针
  • 由void构成万用指针

注意:系统给指针类型的大小是固定的,具体取决于系统的位数

空类型

无值类型

  • void和函数组成
    • 无返回值
    • 无参数
  • void和指针组成:
    • 通用类型指针

常亮

在程序运行过程中无法改变的量

如:1,2,3,4... A,B,C... 12345, ABC

  • 定义:
    • 使用 const 修饰符:
      • 定义的时候赋值,之后不能赋值:const int x = 100;
      #include <stdio.h>
      
      void main()
      {
          const int const_x = 200;
          // const_x = 200; 常亮不能修改
          printf("%d\n", const_x);
      }
      

变量

运行过程中可以被修改的量

  • 变量名:
    • 指向的是内存中的地址
    • 命名规则:
      • 只能由字母数字下划线组成,只能以下划线和字母开头
      • 尽量起名做到见名知意
      • 尽量驼峰命名:int minNumber;
      • 代码缩进,让代码更易读
  • 定义变量:
    • 格式: 数据类型 变量名;
      • 定义int:int x;
      • 定义short,并初始赋值: short x = 10;
      • 定义float: float x;
#include <stdio.h>

void main()
{
    int x = 10;
    x = 30;
    printf("%d\n", x);

    float y;
    printf("%f\n", y);
}

int存储过程

  • 存储二进制码

    • 将数据绝对值取反+1 就是他的二进制码
  • 读取数据:

    • 将二进制码-1取反,就是数据值

实际系统在操作的时候最高位不会跟着变动,他表示的正负(0负数,1正数)

  • 高精度向地精度数据赋值的时候只能保留低字节数据,只保留能保留的比特位。因此可能数据会丢失
int x = 65536;
unsigned short y = x;

// short是2字节,最大值是65535,int是4字节,复制时会将超出2字节的数据丢失
// 此时,y就是0,因为x往y赋值只能赋值2字节,多余的位会丢掉
print("%d", y);  
  • 低精度向高精度复制,直接拷贝,如果位unsigned,高字节补0,如果signed,高字节补符号位。
  • 代码:
#include <stdio.h>

void main()
{
    int m = 65536;  // 结果:n=0
    // int m = 65535;  // 结果:n=65535
    // int m = 65534;  // 结果:n=65534
    unsigned short n = m;
    printf("n: %d\n", n);
}

cpu计算

  • cpu从内存中获取数据,将数据存储到寄存器中进行使用。(寄存器与cpu交互速度更快)