此题怎解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了此题怎解相关的知识,希望对你有一定的参考价值。
有如下程序:
#include<stdio.h>
#define N 2
#define M N+1
#difine NUM 2*M+1
void main()
int i;
for(i=1;i<NUM;i++)
printf(“%d\n”,i);
该程序中的for循环执行的次数是()
A. 5 B. 7 C. 6 D.8
此题考察的是宏定义的知识
#define M N+1
#difine NUM 2*M+1
将M=N+1带入:即为
M=2*N+1+1=6。
i从1~5,所以for循环5次
与值对应的是
#define M N+1
#difine NUM 2*(M)+1
这样带入的时候就是
2*(N+1)+1=7
阐述明白了没有 参考技术A for执行5次
程序中遇到宏定义时是直接替换,如NUM=2*M+1=2*N+1+1=2*2+1+1=6
所以i从[1,6)共5次.我已经用程序测试过了:) 参考技术B C
NUM=2*M+1=7
循环i从1到6 参考技术C A
NUM=2*M+1=2*N+1+1=2*2+1+1=6
[1-6)共5次,下面的程序,你运行一下就知道了
#include<stdio.h>
#define N 2
#define M N+1
#define NUM 2*M+1
void main()
int i;
for(i=1;i<NUM;i++)
printf("%d\n",i);
参考技术D 5次循环,选择A
#define NUM 2*M+1 定义的宏常量,在编译时会直接将出现NUM的地方全部替换成2*M+1,而不是先计算出2*M+1,再将值替换。
因此对于语句:i<NUM,
对于NUM,会替换成i<2*M+1,
M再被替换成i<2*N+1+1,
N又被替换成2,
因此原语句,最终结果是i<2*2+1+1,因而i<6,会执行5次循环。
以上是关于此题怎解的主要内容,如果未能解决你的问题,请参考以下文章