请教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 打赏 收藏 转发到动态 举报
写回复
用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

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧