CodeSky 代码之空

随手记录自己的学习过程

C define与const的不同

2014-04-24 00:28分类: C评论: 0

其实这个是困惑了我好久的问题,没想到在上机课做到的题里找到了答案——我的困惑是:#defineconst到底有什么区别。

题目:

1#define N 2 
2#define M N+1 
3#define NUM 2*M+1 
4int main(void) 
5{  int i; 
6   for(i=1;i<=NUM;i++)  printf(“%d\n”,i); 
7} 
8

该程序中的for循环执行的次数是( ) A) 5 B) 6 C) 7 D) 8

答案是6,跑过以后怎么都不理解,这是因为忽略了#define的重大不同。

#define进行的其实是简单的代入, 换句话说,NUM去找了M的表达式,把M的表达式代入,得出2*N+1+1,接着再去找N是多少,结果是2*2+1+1,因此等于6,而变量的话,毫无疑问则是进行了运算之后得出了的结果。

扩展阅读:http://blog.csdn.net/benny5609/article/details/2314541

评论 (0)