文章目录
写出每种数据类型对0值的比较?
- 整数型直接与数字0进行比较即可
- 字符型需要与字符‘0’进行比较
- 浮点型由于有误差,与0进行比较时,若判断等于0,其实需要在某一极小的区间,-0.000001<X<0.000001,即与0相等
由多个源文件组成的C程序,经过编辑、预处理、编译、链接等阶段会生成最终的可执行程序。在此过程中,哪个阶段可以发现被调用的函数未定义?
在链接阶段,编译器将所有的源文件及其相关的库函数组合成可执行程序。如果在连接阶段发现某个函数在任何源文件中都没有定义,那么链接器将会报告链接错误,并指出未定义的函数标识符。
什么是预编译,预编译的用处是什么?
预编译就是在编译阶段前对程序的处理,预编译的作用是处理#开头的文件或宏,将#include包含的文件直接拷贝到声明了的.c文件中,同时对#define定义的宏进行替换操作,然后删除代码中的注释。分点如下:
- 删除所有#define,并根据宏名称进行替换
- 处理#include包含的文件,将#include包含的文件直接复制到该位置
- 删除所有注释
- 处理条件编译指令#ifndef #ifndef #endif等等 就是带有#号的
- 添加一些额外信息,方便调试
sizeof是什么,作用在哪个阶段
sizeof是一个关键字,用于获取变量、类型或表达式的字节大小。作用在编译阶段
头文件中的ifndef/define/endif的作用
防止头文件重复定义
include<>与#include""的区别
- <> 使用这个会检查系统文件下是否存在这头文件
- " " 是先检查程序目录 程序目录没有则检查系统目录
汉字的常用编码方式是什么?采用几字节存储,为什么?
GBK编码,2字节,因为汉字超过了1个字节表示的范围,采用2字节存储且最高位为1,表示汉字存储方式
现在需要给银行设计一套存储系统,需要精确到小数点后4位,请问使用什么数据类型。
int类型,因为银行对于数据的要求精度不能有偏差,而浮点数存在精度误差,所以采用整数类型存储,然而显示的时候添加上小数点进行显示。
程序的内存基本分区
内存基本可以分为四个区,栈区、堆区、全局区/静态数据区、程序代码区。
- 栈区:栈是用于存储局部变量、函数参数以及函数调用过程中的临时数据的区域。栈是自动分配和释放的,它的大小在编译时是固定的,由操作系统或编译器决定。
- 堆区:堆是用于动态分配内存的区域,用于存储动态分配的对象,例如使用’malloc’,'calloc’等函数分配的内存。堆区分配的内存需要手动释放,否则可能会导致内存泄漏。
- 全局区/静态数据区:全局区存储全局变量和静态变量。
- 程序代码区:代码区包含程序的机器指令(二进制代码)。这个区域用于存储程序的执行代码。它通常是只读的,不能进行写操作。