C语言宏的问题

来源:百度知道 编辑:UC知道 时间:2024/06/07 18:25:41
#include "stdio.h"
#include "math.h"
#define S(x) sqrt(x+100)
#define D(y) sqrt(y+268)
#define K 1
int main(void)
{
int i=1,a,b;
while(i!=10000)
{
a=S(i);
b=D(i);
i++;

#if K
if(a*b==i+100 && b*b==i+286)
printf("\n%ld\n",a+b);
#endif
}

}

这个那出问题了,还是不能这么写,请高手帮忙!
说的纤细点!
谢谢!

#if K 不对
改成
#ifdef K
if(a*b==i+100 && b*b==i+286)
printf("\n%ld\n",a+b);
#endif

或者像一楼说的]
if (K == 1)
{
if(a*b==i+100 && b*b==i+286)
printf("\n%ld\n",a+b);
}//一楼这里多了分号,虽然不会出错,但是也没必要有

#define K 1
的意思是程序中的 K 用 1 替代后再作编译。

#if K 不对

if (K == 1)
{
if(a*b==i+100 && b*b==i+286)
printf("\n%ld\n",a+b);
};
就可以了

#if K
if(a*b==i+100 && b*b==i+286)
printf("\n%ld\n",a+b);
#endif

这种宏不要写在循环里头,不容易看懂。设个变量,不要#define K 1

在main()里头设定一个 int k = 1;
然后再下面判断if(k=1)就行了