编译过程,三目运算符,隐形转换

一.编译过程

1.预编译阶段  选项:gcc -E test.c -o test.i

主要处理文件中宏定义,注释,以及将头文件插入到主代码中,生成扩展名为“.i”的文件,替换原来的.c文件(原文件保留)。

2.编译阶段  选项:gcc -S test.c -o test.s

将代码转化成汇编语言或某种中间代码。编译器首先会检查代码的规范性,是否有语法错误等,以确定代码实际要做的工作;检查完毕后转换为底层机器可处理的汇编语言,即生成.s文件替换.i文件。

3.汇编阶段  选项:gcc -C test.c -o test.o

将汇编语言直接映射为二进制码,以二进制码格式的指令将会打包封存成可重新定位的目标程序的格式,生成.o文件替换原来的.s文件。.o文件由段组成,且至少有两个段:代码段和数据段。代码段主要包含程序的指令,数据段主要是各种全局变量或静态数据。

4.链接阶段  gcc test.o -o xxx

将多个.o文件整合成一个可执行文件。

该阶段的三个步骤:

        1)将代码和数据模块象征性地放入内存

        2)决定数据和指令标签的地址

        3)修补内部和外部引用

GCC选项描述:

        -E  预处理指定的源文件,不进行编译。

        -S  编译指定的源文件,但不进行汇编。

        -c  编译、汇编指定的源文件,但不进行链接。

        -o  指定生成文件的文件名。

二.三目运算符(又称条件运算符)

书写:<表达式1> ?  <表达式2> :  <表示式3>;

返回值:先求表达式1,如果为真,则执行表达式2,并返回表达式2的结果;如果表达式1的值为假,则执行表达式3,并返回表达式3的结果。

三.隐形转换(算术运算)

原则:

        1.低精度数据类型向高精度数据类型转换

        2.赋值运算过程中右值的数据类型向左值的数据类型转换

方式:

        1.等空间到等空间:数据的原样拷贝

        2.小空间到大空间:

                                        有符号数据类型:符号位扩展

                                         无符号数据类型:高位补零

        3.大空间到小空间:截取数据低位

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值