社区
C语言
帖子详情
请教C语言呐
胡晓靖
2019-06-02 03:27:40
#include"stdio.h"
#define SQR(x) x*x
int main()
{ int a,k=3;
a=++SQR(k+1);
printf("%d\n",a);
} 请问大神为什么输出结果是9而不是8!? 按理说SQR(k+1)是7,那++SQR(k+1)应该是8才对啊!?
...全文
115
7
打赏
收藏
请教C语言呐
#include"stdio.h" #define SQR(x) x*x int main() { int a,k=3; a=++SQR(k+1); printf("%d\n",a); } 请问大神为什么输出结果是9而不是8!? 按理说SQR(k+1)是7,那++SQR(k+1)应该是8才对啊!?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
吖如
2019-06-03
打赏
举报
回复
++SQR(k+1) 展开 ++k+1*k+1 =4+1*k+1=4+4+1=9
棉猴
2019-06-03
打赏
举报
回复
胡晓靖
2019-06-03
打赏
举报
回复
引用 6 楼 吖如的回复:
++SQR(k+1) 展开 ++k+1*k+1 =4+1*k+1=4+4+1=9
谢谢,明白了。。。。。。
qq_44844086
2019-06-02
打赏
举报
回复
#define 只是简单的文本替换
xian_wwq
2019-06-02
打赏
举报
回复
宏定义的时候带上()是个好习惯
虔诚~似锦
2019-06-02
打赏
举报
回复
一定要先替换啊!++SQR(k+1) 展开是++k+1*k+1,然后根据优先级计算,先算++k,这时k的值已经发生改变了,变成4,然后再算后面,答案就是9了。
ysnis
2019-06-02
打赏
举报
回复
++SQR(k+1) 展开是 ++k+1*k+1 别加括号啊
赵4老师
2019-06-02
打赏
举报
回复
VC编译选项加/EP /P(项目、属性、配置属性、C/C++、预处理器、预处理到文件:是,预处理取消显示行号:是),重新编译,查看宏展开后对应的.i文件。gcc加-E
http://bbs.csdn.net/topics/391003898
C语言
70,037
社区成员
243,243
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章