1.C语言的基本类型有哪些,分别占几个字节?
整型
short int 2
int 4
long int(32) 4 (64) 8
long long int 8
字符型
char 1
浮点型
float 4
double 8
2.char类型取值范围?
a.有符号:(-128,127)
b.无符号:(0,127)
3.源码反码补码的转换(笔试出现)
正数的源码=反码=补码
负数或高位为1的有符号数:
源码取反得到反码(符号位不取反),反码加1得到补码
补码是计算机存储的二进制,源码是人算的二进制
4.整型和整型运算,结果是什么类型?
结果为整型
5.浮点类型和整型运算,结果是什么类型?
结果为浮点类型
6.无符号与有符号运算,结果是什么类型?
结果为无符号类型
7.字节数少的向字节数多的转换,有什么原则
将最高位往前补符号位
8.取余运算,模数和被模数要注意什么
模数和被模数都不能为浮点类型
9.浮点类型怎么判断两个是否相等,怎么判断是否等于0
判断相等:两数相减在不在[ -1e-6,1e-6 ]这个区间,双精度是[-1e-15,1e-15]
判断等于0:判断这个数在不在[ -1e-6,1e-6 ]这个区间
10.增量减量运算符的运算逻辑
i++意思为 i=i+1,并且后置++是先返回值再自增加一
++i是前置++,是先自增加一再返回值
i--和--i同理
11.位运算口诀
使用位或置1
使用位与清零
使用异或部分取反
使用取反取反
左移乘2
右移除2
12.if和switch语句的区别
if:
可以进行数据大小范围判断
可以对浮点类型操作判断
执行效率比较低,会读取每一个if语句,最后来执行符合条件的
switch:
数据相等时才执行
不能对浮点类型判断,只能对精确值判断
执行效率比较高,会生成一张表,直接执行符合条件的语句
13.while循环 for循环的死循环结构
while(1)
for( ; ; )
14.字符串与字符数组的区别?
字符串包含一个隐藏的 '\0' 占一个字节
字符数组没有 '\0'
15.sizeof和strlen的区别?
sizeof:返回是整个数据所占的空间字节大小
strlen:返回的是有效长度,不包括 '\0'
16.string函数族的函数用自己的代码改写:strlen strcpy strcmp strcat
strlen:遇到 '\0' 停止计数,不包括 '\0'
strcpy:被复制的数据遇到自己的'\0'会停止复制,但会将'\0'一起赋值过去
strcmp:前一个和后一个相比,相减>0就是前一个大,比完再判断有没有遇到'\0'
strcat:将后一个数据拼到前一个的'\0'位置,并且最后加'\0'
17.冒泡选择排序
冒泡排序逻辑:
从前往后,第一个数与后面的数两两比较,符合条件就交换,然后第一个数位置固定
依次类推,假如5个数,第一个数需要跑4趟,第二个数需要跑3趟
选择排序逻辑:
先拿出第一个数作为比较值,与后面的数两两比较,符合条件就记住值,
等该数跑完一趟后,赋值给第一个数的位置
18.#ifndef - #define -#endif 有什么作用
防止重复定义头文件
19.#include <> #include "" 有什么区别?
#include <>:去标准库目录下找头文件,标准库:/user/include
#include "":到指定文件路径下找头文件,没找到就去标准库目录里找
20.static关键字作用
static修饰的局部变量:不可以被除本函数外的程序调用,初始化值为0,只初始化一次
static修饰的全局变量:不可以被除本文件以外的文件访问调用,初始化值为0
static修饰的函数:不可以被除本文件以外的文件访问调用
21.const关键字的作用
const修饰的全局变量:全局只读,不可以被改变
const修饰的局部变量:局部只读,不可以被改变,不能被除本函数以外的程序访问
22.内存分布
栈区:系统自动申请、释放的变量,例如返回值、形参、const局部变量、普通局部变量
堆区:手动申请、释放的变量
.bss:未初始化的static静态变量与全局变量
.data:已初始化的static静态变量与全局变量
.rodata:只读区,const修饰的全局变量
常量区:存储常量
代码区:存储二进制代码