==============================
2022-7-14
==============================
面试题
1.在C语言中以 # 开头的操作是预处理的操作
2.预处理阶段会有哪些操作?
3个操作,文件包含 条件编译 宏定义
3.从.c文件编译成可执行程序需要经历哪些阶段?
源程序 被预处理过的源文件 汇编文件 目标文件
hello.c-------->hello.i----->hello.s----->hello.o--->a.out
预处理 编译 汇编 链接
4.包含头文件时使用尖括号或者双引号的区别?
尖括号 : 默认从指定目录中查找头文件(/usr/include),
如果找不到报错
双引号 : 默认从当前目录中查找头文件,如果找不到再从
指定目录中查找头文件(/usr/include),
如果再找不到报错
5.C语言中有字符串但是没有字符串类型
#include <stdio.h>
/*
main函数(主函数) : 是程序的入口
当执行可执行程序时,从main函数进入,
按照从上往下的顺序逐行逐行执行代码,
最后从main函数退出
在刚开始写程序时,
多问问自己为什么要写这一行代码?
写这一行代码要干什么?
*/
/*
函数的返回值类型 函数名(参数列表)//该处参数指的是形式参数
{
程序的代码
}
*/
int main(void)
{
printf("Hello World!");
/*
调用了printf函数
printf函数的功能 :
可以把双引号引起来的内容打印输出到终端上
在C语言中双引号引起来的内容叫做字符串
在C语言中单引号引起来的内容叫做字符
字符串是由一个一个单一的字符串组成的,
最后会有一个结束标志尾0('\0')
--------------------------------
"0" 这是一个字符串,是由'0' + '\0'组成
'0' 这是一个字符,ASCII值48
'\0' 这是一个字符,并且是一个转义字符,是尾0,ASCII是0
0 这是一个整数0
*/
}
/*
其实字符就是把计算机世界中的数字和日常生活中的符号
进行一一对应
printf函数
1.转义字符(除了有数字的对应关系以外还有额外的含义)
字符 ASCII值 额外的含义
'\0' 0 字符串的结束标志
'\n' 10 换行符
'\r' 13 回车符
'\t' 9 水平制表符
'\v' 11 垂直制表符
2.标准化输出格式
%d 十进制整数(%03d)
%x 十六进制输出
%o 八进制输出
%f 小数输出(%.2f)
%c 字符输出
%s 字符串输出
%p 地址输出
%% 打印百分号本身
3.VT控制码
可以控制打印输出的属性
*/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main(int argc, char *argv[])
{
int i = 0, j = 0;
for(i = 30, j = 47; i <= 37 && j >= 40; i++, j--)
{
printf("\33[%dm\33[%dmHello World!\33[0m\n",i ,j);
}
return 0;
}