10. C语言的编译系统对宏命令的处理是( )。

作者&投稿:慈俭 (若有异议请与网页底部的电邮联系)
C语言的编译系统对宏命令的处理~

前言:宏实质就是编译器在对代码进行编译之前进行的一个“查找替换”工作,就跟你在处理文档时用WPS/WORD/记事本等进行“查找替换”操作一样。

C语言的编译系统对宏命令的处理是()
A。在程序运行时进行的
B。在对源程序中其他成分正式编译之前进行的
C。在程序连续时进行的
D。和C程序中的其他语句同时进行编译

答:选B。在对源程序中其他成分正式编译之前进行的



2,
#define N 2 /* 在预编译时将用下面代码中N替换成2 */
#define M N+1 /* 在预编译时将M替换成N+1(即2+1,N会再被替换成2)*/
#define NUM 2*M+1 /* 如上:在预编译时NUM替换成2*M+1,即2*N+1+1,即2*2+1+1*/
main()
{int i;
for(i=1;i<=NUM;i++)printf("%d
",i);
/*
* 如上所述,上句展开为:for(i=1;i<=2*2+1+1;i++)printf("%d
",i);
* 所以:循环将执行6次
*/
}

/* 切记注意:每一个宏百进行替换时只是替换“正文”中的内容,而不包括预编译语句的内容, 否则就会像不少人理解的那样,错误地认为第2个题中的循环将执行7次 */

前言:宏实质就是编译器在对代码进行编译之前进行的一个“查找替换”工作,就跟你在处理文档时用wps/word/记事本等进行“查找替换”操作一样。
c语言的编译系统对宏命令的处理是()
a。在程序运行时进行的
b。在对源程序中其他成分正式编译之前进行的
c。在程序连续时进行的
d。和c程序中的其他语句同时进行编译
答:选b。在对源程序中其他成分正式编译之前进行的
2,
#define
n
2
/*
在预编译时将用下面代码中n替换成2
*/
#define
m
n+1
/*
在预编译时将m替换成n+1(即2+1,n会再被替换成2)*/
#define
num
2*m+1
/*
如上:在预编译时num替换成2*m+1,即2*n+1+1,即2*2+1+1*/
main()
{int
i;
for(i=1;i<=num;i++)printf("%d
",i);
/*
*
如上所述,上句展开为:for(i=1;i<=2*2+1+1;i++)printf("%d
",i);
*
所以:循环将执行6次
*/
}
/*
切记注意:每一个宏百进行替换时只是替换“正文”中的内容,而不包括预编译语句的内容,
否则就会像不少人理解的那样,错误地认为第2个题中的循环将执行7次
*/

前言:宏实质就是编译器在对代码进行编译之前进行的一个“查找替换”工作,就跟你在处理文档时用WPS/WORD/记事本等进行“查找替换”操作一样。

C语言的编译系统对宏命令的处理是()
A。在程序运行时进行的
B。在对源程序中其他成分正式编译之前进行的
C。在程序连续时进行的
D。和C程序中的其他语句同时进行编译

答:选B。在对源程序中其他成分正式编译之前进行的

2,
#define N 2 /* 在预编译时将用下面代码中N替换成2 */
#define M N+1 /* 在预编译时将M替换成N+1(即2+1,N会再被替换成2)*/
#define NUM 2*M+1 /* 如上:在预编译时NUM替换成2*M+1,即2*N+1+1,即2*2+1+1*/
main()
{int i;
for(i=1;i<=NUM;i++)printf("%d\n",i);
/*
* 如上所述,上句展开为:for(i=1;i<=2*2+1+1;i++)printf("%d\n",i);
* 所以:循环将执行6次
*/
}

/* 切记注意:每一个宏百进行替换时只是替换“正文”中的内容,而不包括预编译语句的内容, 否则就会像不少人理解的那样,错误地认为第2个题中的循环将执行7次 */

选A,是在预编译的时候进行处理的,

10题选A
11题选A
12题选C


魏县17824593059: C语言编译预处理选择题 -
歹骅利百: 1C 大写命名只是一般习惯,这样便于区分其它有类型的非预处理期标识符.2BC 替换结果是一个没有任何后缀的数值字面量,为const double类型,即一个双精度浮点数常量(效果同数值后紧接一个类型后缀D或d).3D 编译预处理过程在翻译过程之前进行,预处理之后的中间代码不含预处理命令,才能进行语法分析、语义分析、生成目标代码.4D 同第1题.5D#undef是标准规定的几个预处理命令之一,作用是取消宏定义.6B 由于在编译的翻译过程之前的预处理过程即完成了宏替换,因此只占用编译时间,不占用运行时间.7C 同第6题.也由于如此,宏是不参与翻译过程中的静态类型检查的.==== [原创回答团]

魏县17824593059: 以下叙述正确的是(C) -
歹骅利百: 1.呵呵.#define和printf都属于预处理命令.预处理命令都不是C语句.而预处理 命令式有ANSI C统一规定的,它不是C语句本身的组成部分.2.正是由于预处理命令不是C语句的本身组成部分,所以,不能直接对它们进行 编译(因为编译程序不能识别它们),必须在对程序进行通常的编译之前,先对 程序中的这些特殊的命令进行预处理.而宏命令正是预处理命令的一部分.详细请见C语言的预处理部分.

魏县17824593059: 请问C语言中宏定义怎么用 -
歹骅利百: 宏定义就好像是WORD中的“全部替换”一样,只不过这个替换是在将源程序在系统“编译”时执行的. 举例说: #define sub(a,b) ((a)-(b))源程序中若有 x=sub(200-1,100+10); 会被编译为: x=((200-1)-(100+10)); 即x被赋值为89如果#define sub(a,b) a-b的话 x=sub(200-1,100+10); 就变成x=200-1-100+10; x会被赋值为109

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网