C语言简单知识点总结

来源:互联网 发布:linux用户加组 编辑:程序博客网 时间:2024/06/01 10:35

gcc编译过程

预处理:gcc -E hello.c -o hello.i

预处理:宏定义展开、头文件展开、条件编译等,同时将代码中的注释删除,这里并不会检查语法

编  译:gcc -S hello.i -o hello.s

编译:检查语法,将预处理后文件编译生成汇编文件

汇  编:gcc -c hello.s -o hello.o

汇编:将汇编文件生成目标文件(二进制文件)

链  接:gcc    hello.o -o hello_elf

链接:C语言写的程序是需要依赖各种库的,所以编之后还需要把库链接到最终的可执行程序中去


原码

一个数的原码(原始的二进制码)有如下特点:

最高位做为符号位,0表示正,为1表示负

l 其它数值部分就是数值本身绝对值的二进制数

负数的原码是在其绝对值的基础上,最高位变为1

十进制数

原码

+15

0000 1111

-15

1000 1111

+0

0000 0000

-0

1000 0000

反码

l 对于正数,反码与原码相同

对于负数,符号位不变,其它部分取反(1变0,0变1)

十进制数

反码

+15

0000 1111

-15

1111 0000

+0

0000 0000

-0

1111 1111

 

补码

在计算机系统中,数值一律用补码来存储。

补码特点:

l 对于正数,原码、反码、补码相同

l 对于负数,其补码为它的反码加1

补码符号位不动,其他位求反,最后整个数加1,得到原码

十进制数

补码

+15

0000 1111

-15

1111 0001

+0

0000 0000

-0

0000 0000

 


在计算机系统中,数值一律用补码来存储,主要原因是:

l 统一了零的编码

l 将符号位和其它位统一处理

l 将减法运算转变为加法运算

l 两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃


有符号和无符号整型取值范围

数据类型

占用空间

取值范围

short

2字节

-32768 到 32767 (-215 ~ 215-1)

int

4字节

-2147483648 到 2147483647 (-231 ~ 231-1)

long

4字节

-2147483648 到 2147483647 (-231 ~ 231-1)

unsigned short

2字节

0 到 65535 (0 ~ 216-1)

unsigned int

4字节

0 到 4294967295 (0 ~ 232-1)

unsigned long

4字节

0 到 4294967295 (0 ~ 232-1)



运算符优先级



原创粉丝点击