C语言_编译过程_数据类型(进制转换)_运算符(类型转换)

  • C程序编译过程

   预处理:宏定义展开、头文件展开、条件编译、删除注释、不检查语法;-E    .i

   编译:检查语法,将C语言转成汇编语言;-S    .s

   汇编:将汇编文件转成二进制码;-C     .o

   链接:将C语言依赖库链接到程序中

  • 常见的代码问题:

   编辑时异常;编译时异常;运行时异常;

  • CPU内部结构与寄存器:

   寄存器是CPU内部最基本的控制单元

   CPU对外是通过总线(地址、控制、数据)来和外部设备交互的

  • 寄存器、缓存、内存三者的关系:

1.按离CPU距离 ,由近及远:寄存器、缓存、内存。

2.CPU计算时,先把数据读到内存,再把即将要用到的数据读到寄存器。于是CPU<-> 寄存器<->缓存<->内存。

3.缓存存在的原因:如果经常操作内存中的同一地址的数据,就会影响速度。于是 就在寄存器与内存之间设置一个缓存。因为缓存提取的速度远高于内存。

  • 汇编语言:

   Mov移动

   Add添加

   Push压栈

   Pop出栈

   Call调用

  • 断点和单步调试:
  • 集成化开发环境:(IDE)

    用于提供程序开发环境的应用程序。

 

  • 数据类型:

见C++

%d :输出有符号的十进制int类型

%o:输出八进制int类型

%u:输出十进制无符号数

%x:输出十六进制,字母以小写输出

%X:输出十六进制,字母以大型写输出

 

  • Scanf安全问题解决:

#define _CRT_SECURE_NO_WARNINGS

Pragma warning(disable:4996)

  • 进制转换:

二进制:

  1. 当前计算机系统使用的基本上是二进制系统,数据在计算机中主要以补码 的形式存在
  2. Bit(比特):一个二进制代表一位,一个位只能表示0或1两种状态。数据 传输习惯以“位”(bit)为单位。
  3. Byte(字节):一个字节为8个二进制,称为8位,计算机中存储的最小单 位是字节。数据存储习惯以“字节”为单位。

十进制:以正常数字1-9开头,如123;

八进制:以数字0开头,如0123;

十六进制:以0x开头,如0x123;

二进制:C语言不能直接书写二进制数。

计算机内数据存储的方式:原码、补码、反码、补码的意义、数值溢出;

在计算机系统中,数值一律用补码来存储,主要原因是:

  1. 同意了零的编码;
  2. 将符号位和其他位统一处理;
  3. 将减法运算转变为加法运算;
  4. 两个补码表示得数相加时,如果最高位(符号位)有进位,则进位被舍弃

数值溢出:

 

  • 运算符:
  • 类型转换:

数据有不同的类型,不同类型数据之间进行混合运算是必然涉及到类型的转换问题

  • 类型转换的方法:

自动转换(隐式转换):遵循一定的的规则,右边一系统自动完成

强制类型转换:把表达式的运算结果强制转换成所需的的数据类型

  • 类型转换的原则:

占用内存字节数少(值域小)的类型,向占用内存字节数多(值域大)的类型转换,以保证精度不降低。

  高   Double<--float

       |

       Long

       |

       Unsigned int

       |

  低   Signed int<---char,short   

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值