GCC选项总结
#查看gcc版本
gcc -v #小写的v
gcc -o 输出的文件名 输入文件名
GCC编译的四个阶段:
gcc -E #预处理生产.i文件
gcc -S #编译生产.s文件
gcc -c #汇编生产.o文件
gcc -o #链接生成可执行文件
# -I是用来告诉gcc去哪里找头文件。(大写的i)
gcc -I查找头文件的目录
#-L是用来告诉gcc去哪里找库文件。
gcc -L
gcc -l (小写的L)# -l的作用就是用来指定具体的静态库、动态库是哪个
gcc -D宏名 #将宏名添加到编译的文件中,常用于调试
# 字符串化
## 连接符号
#define ABC(x) #x
#define ABC(x) day##x
关键字
数据类型 | 自定义数据类型 | 逻辑结构 | 类型修饰符 | 杂项 |
---|---|---|---|---|
char | struct | if、else | auto | return |
int t | union(共用起始地址的一段内存) | switch、case、default | register(寄存器) | sizeof |
long、short | enum | do、while、for | static | |
unsigned 、signed | typedef | continue、break、goto | const | |
float、double | extern | |||
void | volatile |
运算符
算术操作运算 | 逻辑运算 | 位运算 | 赋值运算 | 内存访问符号 |
---|---|---|---|---|
+、- | ||、&& | <<、>> | = | () |
*、/、& | >、>=、<、<= | &、| | +=、-=、&=、… | [] |
! | ^(异或)、~(取反) | {} | ||
?: | ->、. | |||
&、* |
逻辑运算中
A || B === B || A
(注意,上述两者是不相等的,前者如果A是1则不执行B,后者是如果B为1则不执行A)
A && B
异或运算小技巧:
使用异或可以交换两个数的值:
#include<stdio.h>
int main(int argc,char **argv)
{
int a=20;
int b=30;
a = a^b;
b = a^b;
a = a^b;
printf("a:%d, b:%d\n",a,b);
return 0;
}
~
执行上述代码结果后a=30,b=20。