C的秘密(三)

1.程序编译链接有什么作用?

​ c源码经过编译变成对象文件,再进行链接变成可执行文件。

  • 编译阶段:主要在做语法检查,生成对象文件(定义)。

  • 链接阶段:将不同对象文件中的定义以及外部的索引等连接在一起。

  • 从源代码生成可执行文件可分为四个步骤:

    • 预处理(Prepocessing)

    • 编译(Compilation)

    • 汇编(Assembly)

    • 链接(Linking)

      下图为gcc生成输出文件的过程:

2.预处理#

#define PRINT(n)  printf( "connect" #n " = %d", var##n )
int var = 1;
PRINT(9);

/*
以上执行后的结果为:connect9=19
分析:#将数字9字符串化为'9',##将var和n两个符号连接在一起
*/
  • 运算符#(预处理运算符)==字符串化(stringizing);

  • 运算符##可以把两个记号组合成一个记号

3.C语言使用的编码

​ 在c语言中,字符在存储时会根据所用编码转为对应的码值。字符分为窄字符char和宽字符wchar_t。wchar_t 类型的宽字符和宽字符串使用 UTF-16 或者 UTF-32 编码。对于窄字符串,C语言并没有规定使用哪一种特定的编码,只要选用的编码能够适应当前的环境即可,所以,窄字符串的编码与操作系统编译器有关,经常使用的如GBK、UTF-8 都兼容 ASCII(纯ASCII基本不用了)。

4.逗号表达式

​ 逗号","也是一种运算符,其功能是把两个表达式连接起来组成一个表达式,称为逗号表达式。一般形式为:表达式1,表达式2.且求值过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值。

​ 例如:

int x = 2 , y = 3 ;
printf("%d",(x,y));
/*
输出的结果为3
*/

WEIXNI

猜你喜欢

转载自blog.csdn.net/caq_jw/article/details/111934239