1.3.3 步骤3:编译和运行(gcc)
gcc -v
gcc -o hello helloc
gcc -std=c99 Hello.c
上面命令指定按照 C99 标准进行编译,c11,c17,c23。
c89
或ansi
:代表C语言的早期标准,也称为ANSI C或C89标准,于1989年发布。例如:
gcc -std=c89 Hello.c
c11
:代表C语言的2011年标准版本,也称为C11标准。例如:
gcc -std=c11 Hello.c
c17
:代表C语言的2017年标准版本,也称为C17标准。例如:
gcc -std=c17 Hello.c
gnu89
:GNU扩展了ANSI C标准的一部分。例如:
gcc -std=gnu89 Hello.c
gnu99
:GNU扩展了C99标准的一部分。例如:
gcc -std=gnu99 Hello.c
gnu11
:GNU扩展了C11标准的一部分。例如:
gcc -std=gnu11 Hello.c
1. 计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是( )。
A.C语言程序仅可以编译执行
B.C语言程序仅可以解释执行
C.C语言程序既可以编译执行,又可以解释执行
D.以上说法都不对【答案】A
【解析】编译执行是指程序执行前需要一个专门的编译过程把程序编译成机器语言的文件,再次运行时不需要重新翻译,执行效率高;解释执行是指每个语句都是执行的时候才翻译,执行效率低。用C语言编写的程序必须经过编译器编译后,转换为二进制的机器指令来运行。
2. 以下叙述中错误的是( )。
A.C语言的可执行程序是由一系列机器指令构成的
B.用C语言编写的源程序不能直接在计算机上运行
C.通过编译得到的二进制目标程序需要链接才可以运行
D.在没有安装C语言集成开发环境的机器上不能运行C源程序生成的exe文件
【答案】D
【解析】A项正确,C语言的可执行程序是由一系列机器指令组成的;BC项正确,用C语言编写的源程序必须经过编译,生成二进制目标代码,再经过连接才能运行;D项错误,C语言经过编译链接后的二进制目标代码可以脱离C语言集成开发环境独立运行。答案选择D选项。
3.以下叙述中错误的是( )。
A.C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
B.C程序经过编译、链接步骤之后才能形成一个真正可执行的二进制机器指令文件
C.用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中
D.C语言源程序经编译后生成后缀为.obj的目标程序
【答案】A
【解析】A项错误,注释语句不会被翻译成二进制的机器指令。C源程序经过C编译程序编译之后生成后缀为.obj的二进制文件(称为目标文件),然后由“链接程序”(Link)的软件把.obj文件与各种库函数连接起来生成一个后缀为.exe的可执行文件。答案选择A选项。
1. 以下叙述中正确的是( )。
A.C程序中的注释只能出现在程序的开始位置和语句的后面
B.C程序书写格式严格,要求一行内只能写一个语句
C.C程序书写格式自由,一个语句可以写在多行上
D.用C语言编写的程序只能放在一个程序文件中【答案】C
【解析】C程序的注释可以出现在C程序的任何位置,注释符号:“//”或“/*…*/”,选项A错误。C程序中,一行内可写多个语句,每条语句用分号“;”结束,选项B错误,选项C正确。用C语言编写的程序可以放在多个程序文件中,用#include命令行实现文件包含功能,选项D错误。答案选择C选项。
2.【中央财经大学2018研】以下叙述错误的是( )。
A.在程序中凡是以“#”开始的语句行都是预处理命令行
B.预处理命令行的最后不能以分号表示结束
C.#include MAX是合法的宏定义命令行
D.C程序对预处理命令行的处理是在程序执行的过程中进行的【答案】D
【解析】在C语言中,凡是以“#”开头的行都称为编译预处理命令行,为了区别C语句,后面是不加分号的。编译预处理是在编译程序对C源程序进行编译前执行的,而不是在程序执行过程中进行的。
1.5.2 占位符
%c :char型数据
%d :十进制整数(int)
%f :浮点数(float)
%ld :十进制整数(long)
%lu :unsigned long int 类型
%lld :十进制 long long int 类型
%llo :八进制 long