#define SQR(X) X*X main() { int a=16,k=2,m=1; a/=SQR(k+m)/SQ
来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/04/29 04:25:59
#define SQR(X) X*X main() { int a=16,k=2,m=1; a/=SQR(k+m)/SQR(k+m); printf("%d",a) ; } 结果2
#define SQR(X) X*X 这样定义有问题
改成这样:
#define SQR(X) (X)*(X)
不然编译时会把SQR(k+m) 转成 k+m*k+m.与你的想法不一致了
再问: 谢谢你,可是改成这样: #define SQR(X) (X)*(X) 那a/=SQR(k+m)/SQR(k+m); 又按什么顺序计算呢
再答: a/=SQR(k+m)/SQR(k+m); 这条语句在编译时,会转换成这样: a/=(k+m)*(k+m)/(k+m)*(k+m); 这里的运算情况就会产生歧义,有可能根据编译器的不同,结果会不一样。 因此,在写程序时,我们一定要避免这种情况出现,如果你想先算SQR(k+m),就这样定义宏: #define SQR(X) ((X)*(X)) 如果你想先运算SQR(k+m)/SQR(k+m),就这样写:a/=(SQR(k+m)/SQR(k+m)) 养成一个良好的写程序的习惯,不要把不确定的事交给计算机!!不然在应用中会吃尽苦头!
改成这样:
#define SQR(X) (X)*(X)
不然编译时会把SQR(k+m) 转成 k+m*k+m.与你的想法不一致了
再问: 谢谢你,可是改成这样: #define SQR(X) (X)*(X) 那a/=SQR(k+m)/SQR(k+m); 又按什么顺序计算呢
再答: a/=SQR(k+m)/SQR(k+m); 这条语句在编译时,会转换成这样: a/=(k+m)*(k+m)/(k+m)*(k+m); 这里的运算情况就会产生歧义,有可能根据编译器的不同,结果会不一样。 因此,在写程序时,我们一定要避免这种情况出现,如果你想先算SQR(k+m),就这样定义宏: #define SQR(X) ((X)*(X)) 如果你想先运算SQR(k+m)/SQR(k+m),就这样写:a/=(SQR(k+m)/SQR(k+m)) 养成一个良好的写程序的习惯,不要把不确定的事交给计算机!!不然在应用中会吃尽苦头!
#define SQR(X) X*X main() { int a=16,k=2,m=1; a/=SQR(k+m)/SQ
#define SQR(x) x*x void main() { int a=10,k=2,m=1; a/=SQR(k+
#define SQR(X) X*X #include void main(){ int a=16,k=2,b=4,m=
#include #define SQR(x)x*x main() { int a,k=3; a=++SQR(k+1);
以下程序的输出结果是 2为什么 #define SQR(X) X*X main() { int a=16,k=2,m=1
请问 #define sqr(x) x*x K=2,M=1 sqr(k+m)/sqr(k+m)为什么结果是7
请问 #define sqr(x) x*x sqr(k+m)/sqr(k+m)为什么结果是7
#include #define S(x) x*x void main() { int a,k=3,m=1; a=S(k
#define Tap(X) 2*X+1 main() {int a=6,k=2,m=1; a+=Tap(k+m); p
#include #define S(x) x*x main() {int a=9,k=3,m=2; a/=S(k+m)
下列程序输出的结果是?#define Tap(X) 2*X+1 main() {int a=6,k=2,m=1; a+=
设动点M(x,y)满足sqr((x-2)^2+(y-3)^2)+sqr((x+4)^2+(y+5)^2)=k