c语言宏替换
有如下程序#include<iostream.h>#defineN2#defineMN+1#defineNUM2*M+1voidmain(){inti;for(i=1;i...
有如下程序 #include<iostream.h> #define N2 #define M N+1 #define NUM2*M+1 void main() { int i; for(i=1;i<=NUM;i++) cout<<i;} 该程序中的for循环执行的次数是几次,我认为是6,答案是8,麻烦大家帮讲解一下
展开
3个回答
2018-02-19
展开全部
定义宏是,一般建议用括号括起来。我们来看两个例子:
例子一:
#define N m + 1
如果代码里面我们写
N * N
想象看会变成什么
m + 1 * m + 1
也就是 1 + 2 * m 这可能不是你需要的。
例子二 : 如果我们用括号括起来
#define N ( m + 1 )
同样的
N * N
这时候会替换 成
( m + 1 ) * ( m + 1 )
这样的结果才是对的。
回过头来看看你的代码, 你 需要 把 宏 括起来
#include <iostream.h>
#define N (2) // 这里括起来不括起来没区别;但 如果你写成 #define N 1 + 1 就可能造成区别的,所以一般宏定义建议加个括号。
#define M (N+1)
#define NUM (2 * M + 1)
int main() {
for(int i=1; i<=NUM; ++i)
cout << i;
}
展开全部
NUM宏展开即 2*2+1+1,所以NUM值为6
追问
不是(2+1+1)*2+1/2?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
NUM=2*M+1
=
=
追问
不是(2+1+1)*2+1/2吗,请问下怎么做的,不大会
追答
NUM=2*M+1
=2*N+1+1
=2*2+1+1
=6
6次
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |