【发布时间】:2013-11-13 06:07:44
【问题描述】:
#include<stdio.h>
#define square(x) x*x
void main()
{
int i;
i = 8 / square(4);
printf("%d %d", i, 8/square(4));
}
输出:8 8
但是如果我写下面的代码:
#include<stdio.h>
#define square(x) x*x
void main()
{
float i;
i = 8 / square(4);
printf("%f %f", i, 8/square(4));
}
给出输出:8.000000 0.000000
为什么会这样???请解释
【问题讨论】:
-
如果您指定了
%f,则使用浮点字面量。8.0f/square(4.0f). -
总是尝试使用带有必要括号的宏来让生活更轻松!
-
int main()... 运算符优先级... 格式说明符错误... 您是否费心阅读基本的 C 教程? -
Preprosessor 宏与函数不同。他们做了一个 textual 替换。在编写或使用宏之前了解其含义至关重要。