为什么#define square(x) x*x有错误
C语言
#include <stdio.h>/*一个简单の乘方计算器*/
#define square(x) x*x
main(){
char input; int n;
n=0;
input=getchar();
while (input>='0' && input<='9')
{n=10*n+input-'0';
input=getchar();}
接下来最后一行分叉了:
正确的时候:printf("%d", square(n));}
错误的时候:printf("%d", square(n+1));}
为什么在正确的时候输入12,可以正确得出结果144
而改为square(n+1)的时候,却不是现实13的平方169,而是显示了25?
…………………………………………………………
另外一个问题,
如果某一个分支函数,比如 void abc(int x,y,z)
我在定义它时,头前面加的void,到底意思是:
1.abc(int x,y,z)函数不给主函数返回函数值
还是:
2.abc(int x,y,z)函数会给主函数返回一个值,只不过在定义之时不注明这个值的类型
?
[解决办法]
宏定义 改为 ((x)*(x))
另一个问题 你确定 void abc(int x,y,z)中y,z是没有类型的? 找你的说法选1