c语言的类型与计算

类型与计算

计算机体系结构(冯诺依曼体系结构)

-输入单元
-输出单元

  • 运算器(单元)
    • CPU
    • GPU
  • 存储器
    -缓存 cache
    -’主存‘(’内存‘)CPU从哪读数据 直接与CPU连接的 16G
    -外部、辅助(硬盘、CD) 1.5T

    -控制器

CPU读取速率:
缓存 > 内存 > 硬盘 > 网络
ns 几十ns 固态μs 机械ms ms到s

任务:以上几种存储器的 IO 的数量级

常量&变量(字段)

存储输入的数据或运算的中间值及结果,需要声明划分存储空间
内存空间有编号,但是不易于使用,所以给内存区域一个标识符(变量名、常量的名字)

标识符(变量或常量的名字)的命名规则

  • 字母、数字、下划线 _;不能有其他符号

  • 不能数字开头,不能包含空格及下划线之外的其他符号

  • 不能使用关键字和保留字
    ls
    hello
    _hello
    _163
    first_name
    first name 不合规
    65n 不合规
    first-name 不合规

    shell

free 内存的统计信息 32位系统有效寻址能力为4个G
Range 内存的编号范围
-h 可读的

内存的范围

lsmem 内存地址

类型

  • 基本类型(原子)
  • 复合类型(数组、结构体、联合、枚举、类)

整型,不含小数点、区分正负、还可以’无符号’
类型的大小与平台(编译器实现)有关(一个字节8位)

  • ‘short’ 2 2^16 -65536/2 ~ 0 ~ 65536/2 -1
  • ‘int’ 4(32/64位中占4个字节,别的操作系统可能不同)
  • ‘long’ 8
  • ‘long long’ 8

无符号(unsigned)的整型只能存0~正数 系统编程对空间进行编号(计数)

  • ‘unsigned short’ 2 0~65535(端口数65536、android应用的函数数量一般不超过65535/65536超过计数范围会导致丢失)
  • ‘unsigned int’ 4(32/64位中占4字节,别的操作系统可能不同)
  • ‘unsigned long’ 8
  • ‘unsigned long long’ 8

浮点,有小数位

  • ‘float’ 4
  • ‘double’ 8

字符
-‘char’ 1

语言

  • 静态类型:C/C++,Java: 编译时检查使得这些语言比较安全,空间分配比较明确,编译型语言,一般都比较快比较稳定,什么都可以存【快】
  • 动态类型:Python,JS(Javascript) “解释执行”,语言灵活、高效,空间开销大,【慢】

C/C++目前遇到的威胁早期是GO,最近是Rust(火狐浏览器)还需要时间,RUST学习成本比较高

作业

1.纸上写各个类型及其大小(字节)
2.复习八进制、十六进制、二进制

(99)转10,8,16,2进制

小数转二进制:0.1