今天是学习的第七天
#include <stdio.h>
头文件: 函数的声明和类型的定义
#开头的指令 称预处理指令
gcc 编译步骤
1.预处理 :展开头文件,宏替换。…
停留在预处理阶段 —> -E
2.编译:将c代码翻译成汇编
停留在编译阶段–> -S
3.汇编 :汇编成二进制码
停留在汇编 —》-c
4.链接 :动态链接库 最终生成可执行文件
-o 生成目标文件
2.
入口函数main:有且仅有一个
输出函数printf
字符串""内的\开头的字符–>转椅字符
\n 换行\t制表符(tab)\b退格
编码:字符/汉字储存到计算机中对映的值
字符串遇到\0 是终止
0x开头的表示16进制数
存储空间进位
8bit = 1byte
1024 byte = 1k
1024 k = 1M
定义变量 -->分配存储空间
基本类型:32位/64位
字符 类型:char 1/1 字节 printf(“c”)
整型:short (2/2)(%hd)字节 int (4/4)(%d) long(4/8) (%ld) (longlong)(8/8)
实型:float(4/4) (%f) double(8/8) (%lf) long double (8/16)
空类型:void
复合类型:struct union
字符类型 | 32位操作系统所占位置(字节) | 64位(字节) | printf(%) |
---|---|---|---|
char | 1 | 1 | %c |
short | 2 | 2 | %hd |
int | 4 | 4 | %d |
long | 4 | 8 | %ld |
longlong | 8 | 8 | |
float | 4 | 4 | %f |
double | 8 | 8 | %lf |
long double | 8 | 16 | |
void | 1 | 1 |
符号:
signed(default) /unsigned
标识符:变量名、函数名、类型名
命名规则:有数字字母下划线组成,数字不开头,顾名思义并且避开c关键字
c关键字
特殊含义
int char if while switch continue break sizeof
printf("%x") 16进制输出 里面%#x 显示 0x+16进制数
运算符
查看man手册
man operator
-
-
-
类型 运算符
| 算术运算符 | + - * / % |
| 关系运算符 | > >= < <= != == |
| 位运算符 | >> << & |^ ~ |
| 逻辑运算符 | && ||! |
| 条件运算符 | ?: |
| 赋值运算符 | = += -= *= /= &= |= ^= %= >>= <<= |
| 逗号运算符: | , | -
-
二进制 最高位0为正,正 1为负
& 按位与运算 二进制 只有都为1才为1
| 或 二进制有一个为1 就为1
-
^ 异或 相同为0;不同为1
-
按位取反 二进制
移位运算
<< 1 左移 补0 ,扩大 2倍 >>右移缩小2倍 ,高位补符号位
面试题
1.将一个整形变量的第3位置为1,其他位不变; 置就 | ; m | (1<<2)
2.将整形变量的第5位清为0,其他位不变; 清 就& ; m & ~(1 <<4)
需要掌握二进制的相互转换
二进制转八进制 每3位一组 二进制转十六进制 每4位位1组