使用 define 指令的 Square 不起作用
Square using define directive not working
我实现了一个平方定义指令,如下所示:
#include <stdio.h>
#define SQR(y) ((y)*(y))
int main() {
int a;
printf("Enter : ");
scanf("%d",&a);
a = SQR(a);
printf("The square is: %d\n",SQR(a));
return 0;
}
但是当我执行它时,我没有得到任何错误,但每次都给出错误的答案。
为什么输入是4次方而不是2次方?
因为您在代码中写了 ((a)*(a))
两次。
a = SQR(a); //<-- Here a = a*a
printf("The square is: %d\n",SQR(a)); //<-- and here print a*a
你将它平方两次。
在您的代码中:
a = SQR(a);
printf("The square is: %d\n",SQR(a));
这首先使a = a*a
现在你打印SQR((a*a)*(a*a))
,或者a*a*a*a
您可以将 printf
中的 SQR(a)
替换为 或
删除 a = SQR(a)
试试这个:
#include <stdio.h>
#define SQR(y) ((y)*(y))
int main() {
int a;
printf("Enter : ");
scanf("%d",&a);
printf("The square is: %d\n",SQR(a));
return 0;
}
你计算了两次平方。你先在这里 a
广场:
a = SQR(a);
然后,在 printf
:
中再次对这个数字进行平方
printf("The square is: %d\n",SQR(a));
通过将上面的 printf
替换为:
来解决问题
printf("The square is: %d\n", a);
您误解了 c 宏 的用法。
您的宏定义没有问题。问题在于使用。
a = SQR(a);
在上一行中,您计算了 a
的平方并将结果再次分配给 a
。所以在上面的行执行后 a
的值是输入值的平方。
然后在下一行中,您正在 a
.
上调用宏
printf("The square is: %d\n",SQR(a));
然后打印 a
当前值的平方。该值不是您需要获得的值。
例如,如果您输入 2,您将得到 16,但您需要 4 作为答案。
我实现了一个平方定义指令,如下所示:
#include <stdio.h>
#define SQR(y) ((y)*(y))
int main() {
int a;
printf("Enter : ");
scanf("%d",&a);
a = SQR(a);
printf("The square is: %d\n",SQR(a));
return 0;
}
但是当我执行它时,我没有得到任何错误,但每次都给出错误的答案。
为什么输入是4次方而不是2次方?
因为您在代码中写了 ((a)*(a))
两次。
a = SQR(a); //<-- Here a = a*a
printf("The square is: %d\n",SQR(a)); //<-- and here print a*a
你将它平方两次。
在您的代码中:
a = SQR(a);
printf("The square is: %d\n",SQR(a));
这首先使
a = a*a
现在你打印
SQR((a*a)*(a*a))
,或者a*a*a*a
您可以将 printf
中的 SQR(a)
替换为 或
删除 a = SQR(a)
试试这个:
#include <stdio.h>
#define SQR(y) ((y)*(y))
int main() {
int a;
printf("Enter : ");
scanf("%d",&a);
printf("The square is: %d\n",SQR(a));
return 0;
}
你计算了两次平方。你先在这里 a
广场:
a = SQR(a);
然后,在 printf
:
printf("The square is: %d\n",SQR(a));
通过将上面的 printf
替换为:
printf("The square is: %d\n", a);
您误解了 c 宏 的用法。
您的宏定义没有问题。问题在于使用。
a = SQR(a);
在上一行中,您计算了 a
的平方并将结果再次分配给 a
。所以在上面的行执行后 a
的值是输入值的平方。
然后在下一行中,您正在 a
.
printf("The square is: %d\n",SQR(a));
然后打印 a
当前值的平方。该值不是您需要获得的值。
例如,如果您输入 2,您将得到 16,但您需要 4 作为答案。