C语言基础2

1.将C语言代码放在.cpp文件中不会有错,很多初学者都是这么做的,很多大学老师也是这么教的。但是,我还是强烈建议将C语言代码放在.c文件中,这样能够更加严格地遵循C语言的语法,也能够更加清晰地了解C语言和C++的区别。

2.可执行程序的内部是一系列计算机指令和数据的集合,它们都是二进制形式的,CPU 可以直接识别,毫无障碍

3.不管我们编写的代码有多么简单,都必须经过「编译 --> 链接」的过程才能生成可执行文件,再次强调,编译是针对一个源文件的,有多少个源文件就需要编译多少次,就会生成多少个目标文件:编译就是将我们编写的源代码“翻译”成计算机可以识别的二进制格式,它们以目标文件的形式存在;链接就是一个“打包”的过程,它将所有的目标文件以及系统组件组合成一个可执行文件。C语言代码经过编译以后,并没有生成最终的可执行文件(.exe 文件),而是生成了一种叫做目标文件(Object File)的中间文件(或者说临时文件)。目标文件也是二进制形式的,它和可执行文件的格式是一样的。对于 Visual C++,目标文件的后缀是.obj;对于 GCC,目标文件的后缀是.o。目标文件经过链接(Link)以后才能变成可执行文件。

4.有些代码在微软编译器下能够正常运行,拿到 GCC 下就不行了,一堆报错信息;或者反过来,在 GCC 上能运行的代码在微软编译器下不能运行。这是因为不同的编译器支持不同的标准,并且每个编译器都进行了自己的扩展,假如你使用了微软编译器私有的扩展函数,那么拿到 GCC 下肯定是不支持的。

5.sizeof 是C语言中的操作符,不是函数,所以可以不带( ),如果后面跟的是变量名称,那么可以省略( ),如果跟的是数据类型,就必须带上( )

6.在格式控制符中加上#即可输出前缀,例如 %#x,a=20;printf("data=%#x",a);--->data=0x14;

7.严格来说,格式控制符和整数的符号是紧密相关的,具体就是:

  • %d 以十进制形式输出有符号数;
  • %u 以十进制形式输出无符号数;
  • %o 以八进制形式输出无符号数;
  • %x 以十六进制形式输出无符号数

8.在计算机内存中,整数一律采用补码的形式来存储。这意味着,当读取整数时还要采用逆向的转换,也就是将补码转换为原码。将补码转换为原码也很简单:先减去 1,再将数值位取反即可。

9.C语言中小数的指数形式为:aEn 或 aen;整个表达式等价于 a×10n

10.一个数字,是有默认类型的:对于整数,默认是 int 类型;对于小数,默认是 double 类型。如果不想让数字使用默认的类型,那么可以给数字加上后缀,手动指明类型:

  • 在整数后面紧跟 l 或者 L(不区分大小写)表明该数字是 long 类型;
  • 在小数后面紧跟 f 或者 F(不区分大小写)表明该数字是 float 类型。
上一篇:自动生成依赖关系(上)


下一篇:GCC-O优化等级