作业帮 > 综合 > 作业

#include #define SQR(x)x*x main() { int a,k=3; a=++SQR(k+1);

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/10/01 11:22:28
#include #define SQR(x)x*x main() { int a,k=3; a=++SQR(k+1); printf(”%d\n”,a);}
求满意 求赞同
宏做的事 仅仅是展开 所以看一下这句展开式怎样的
a = ++k+1*k+1; 现执行* 编程a = ++k+k+1; 然后从左至右执行 ++k k变为4 4+4+1 最后a=9
输出9
再问: 怎么变就可以使结果成为17了呢
再答: #include #define SQR(x)(x)*(x) main() { int a=0,k=3; a=SQR(k+1); ++a; printf("%d\n",a); }
再问: 只变#define SQR(x)(x)*(x) 可不可以
再答: 不可以 它会提示++需要一个左值 或者你可以改成 #include #define SQR(x)(x)*(x) main() { int a,k=3; ++(a=SQR(k+1)); printf("%d\n",a); }