C言语语法总结
一、gcc
1. gcc xxx.c -o xxx #把原代码编译成可执行文件xxx
2. gcc -c xxx.c #编译: 把原代码编译xxx.o后辍的目标文件
3. gcc xxx.o -o xxx #链接: 把xxx.o后辍的目标文件链接成可执行文件xxx ###2.3 步等于1,但是会多出个xxx.o的目标文件,可用于检查错误
Visual Studio
1. F5或ctrl+F5或本地Windows调试器 #把原代码编译成可执行文件xxx
2. 生成->编译 #生成xxx.obj目标文件
3. 生成->仅用于项目->仅链接 cDemo #生成可执行文件xxx.exe ###2.3 步等于1
|
1 2 3 4 5 6 7 8 9 10 11 12 |
二、语法 1. puts("hello world"); #输出字符串 2. printf("a=%d, b=%d, c=%d", a, b, c); #10进制输出 # %hd 十进制输出 short 类型 # %d 十进制输出 int 类型 # %ld 十进制输出 long 类型 # %#ho 八进制输出 short 类型 # %#o 八进制输出 int 类型 # %#lo 八进制输出 long 类型 # %#hx/%#hX 十六进制输出 short 类型 # %#x/%#X 十六进制输出 int 类型 # %#lx/%#lX 十六进制输出 long 类型 十六进制的表示用到了字母, 因此x/X字母的表现形式不同,0b/0B 二进制 0 八进制 0x/0X 十六进制 |
# %c 输出一个字符
|
1 2 3 4 5 6 7 8 9 10 |
# %f 输出一个小数float #float与double类型的区别是, float点四字节(32位), double占8字节(64位) # %lf 输出一个小数double # %e 以指数输出一个float类型3.020000e-1 # %E 以指数输出一个float类型3.020000E-1 # %le 以指数输出一个double类型1.126400e+05 # %lE 以指数输出一个double类型1.126400E+05 # %g 智能输出小数float, 若是指数形式e小写 # %lg 智能输出小数double, 若是指数形式e小写 # %G 智能输出小数float, 若是指数形式E大写 # %lG 智能输出小数double, 若是指数形式E大写 |
# %s 输出一个字符串
3. int: 8Bit=1Byte(字节),一般占4字节,32Bit,也叫32位,如果不考虑正负数int类型保存的最大数为2的32次方减1, 约43亿
short int(short) 只占2字节(16位),如果不考虑正负数short保存的类型最大数2的16次方减1, 等于65535
long int(long) 占8字节(64位),如果不考虑正负数long保存的类型最大数2的64次方减1,这个值很大,过亿万亿了,我也不知道是多大
char 占一字节(8位) 如果不考虑正负数char保存的最大值为2的8次方减1, 等于255, 考虑正负数-128到127
4. 数据类型的长度(不同数据类型占的字节数称为数据类型长度)
sizeof 方法可以检测出长度 short 2字节, int 4字节, long 4/8字节(系统不一样)
内存中存储的数字是以补码形式存储的
三、多线程
1. 创建线程: pthread_create
2. 阻止调用线程并接收返回值: pthread_join
3. 终止当前线程: pthread_exit
4. 线程间的终止信号: pthread_cancel (注意取消点的问题)
5. 锁
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
四、进制之间的转换 1. 整数任意进制转换为十进制: 按权相加 如: 八进制转成十进制 53627 = 5*84+ 3*83 + 6*82 + 2*81 + 7*80 = 22423 十六进制转成十进制 9FA8C = 9*164 + 15*163 + 10*162 + 8*161 + 12*160 = 653964 二进制转成十进制 11010 = 1*24 + 1*23 + 0*22 + 1*21 + 0*20 = 26 2. 小数任意进制转换为十进制: 如: 八进制转成十进制423.5176 = 4*82 + 2*81 + 3*80 + 5*8-1 + 1*8-2 + 7*8-3 + 6*8-4 = 275.65576171875 3. 整数十进制转换成任意进制: 除N取余, 逆序排列 如: 十进制转成八进制 36926 = 36926/8 = 4615 % 6 (商为4615余6) 4615/8 = 576 % 7 576/8 = 72 % 0 72/8 = 9 % 0 9/8 = 1 % 1 1/8 = 0 % 1 = 110076 十进制转二进制 42 = 42/2 = 21 % 0 21/2 = 10 % 1 10/2 = 5 % 0 5/2 = 2 % 1 2/2 = 1 % 0 1/2 = 0 % 1 = 101010 4. 小数十进制转任意进制: 乘N取整, 顺序排列 如: 十进制转八进制 0.930908203125 = 0.930908203125*8 = 7.447265625 int 7(整数部分) = 0.447265625*8 = 3.578125 int 3 = 0.578125*8 = 4.625 int 4 = 0.625*8 = 5.0 int 5 = 0.7345(八进制) 十进制转二进制 0.6875 = 0.6875 * 2 = 1.375 int 1 = 0.375 * 2 = 0.75 int 0 = 0.75 * 2 = 1.5 int 1 = 0.5 * 2 = 1.0 int 1 = 0.1011(二进制) |
|
1 2 3 4 5 6 7 8 9 |
0.1 = 0.1 * 2 = 0.2 int 0 = 0.2 * 2 = 0.4 int 0 = 0.4 * 2 = 0.8 int 0 = 0.8 * 2 = 1.6 int 1 = 0.6 * 2 = 1.2 int 1 = 0.2 * 2 = 0.4 int 0 = 0.4 * 2 = 0.8 int 0 = 0.8 * 2 = 1.6 int 1 = 0.00011001………………(无限循环的二进制) |