Problem description
1.编写第一个C语言程序hello.c
2.分步执行hello.c
ubuntu@ubuntu:program330$ gcc -E hello.c -o hello.i
ubuntu@ubuntu:program330$ gcc -S hello.i -o hello.s
ubuntu@ubuntu:program330$ gcc -c hello.s -o hello.o
ubuntu@ubuntu:program330$ gcc hello.o -o a.out
ubuntu@ubuntu:program330$ ls
a.out hello.c hello.i hello.o hello.s
ubuntu@ubuntu:program330$ ./a.out
在那遥远地方灯火依然昏黄却无数次照亮我的梦乡
3.把这两天的内容写成思维导图
4.总结define宏定义
1.无参宏定义
格式: #define 宏名 宏体 ---->宏体是在程序运行过程中对宏名做的替换
---->宏定义的过程就是宏体替换宏名的过程
eg: #define N 10
#define STR hello ----->不能通过%s,实现打印hello的效果
#define STR "hello" ----->能通过%s,实现打印hello的效果
展开形式
eg:
#define M 4
#define N M+3
#define NUM M*N+10/M //4*4+3+10/4
结果21
2.带参宏定义
#define 宏名(参数1,参数2,···) 对参数执行的操作
eg: #define ADD(a,b) a+b ----->带参宏的宏体,通常是对参数执行的某种操作 eg: printf("%d\n",ADD(10,20)); -----> 30
在宏定义中使用#,将宏定义中的参数转换成字符串
#define STR(n) #n
在宏定义中使用##,实现字符串的拼接
3.注意事项
1.宏定义的位置在头文件下方,主函数上方
2.宏定义中宏名一般大写,带参宏的参数不需要大写3.宏定义预处理阶段,不会检查语法错误
4.宏定义只是简单的替换 5.十进制87转十六进制,八进制和二进制,115的原码反码和补码
十进制 | 十六进制 | 八进制 | 二进制 |
87 | 0x57 | 0b127 | 0101 0111 |
115 的原码0111 0011 反码 0111 0011 补码0111 0011