C:#define用法

时间:2013-08-07 06:42:14

标签: c

以下脚本的输出是20.但任何人都可以详细说明为什么会这样,而不是110

#include<stdio.h>
#define MAX 10
#define MAXLEN MAX+1

int main()
{
  printf("%d", MAXLEN * 10);
  getchar();
  return 0;
}

3 个答案:

答案 0 :(得分:2)

考虑扩展到

的内容
MAXLEN * 10 == MAX+1 * 10

当你考虑运算符优先级给出

MAX + (1 * 10) == 10 + (1 * 10)
               == 10 + 10
               == 20

你可能想要

#define MAXLEN (MAX+1)

代替。

答案 1 :(得分:2)

由于MAX为10,MAXLEN为10 + 1,您打印10 + 1 * 10即20。

宏扩展逐字替换字符串,这就是为什么在定义它们时必须使用括号。例如:

#define MAXLEN (MAX+1)

答案 2 :(得分:2)

MAXLEN * 10 => MAX + 1 * 10 => 10 + (1 * 10) => 20