根书上结果不同,看一下 ,求一下结果 ,

mm2581883 2017-07-21 11:43:19
#include<stdio.h>
#define SQ(y) ((y)*(y))
int main()
{
int i = 1;
while (i <= 5)
printf("%d\n", SQ(i++));
return 0;
}
...全文
360 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_39133990 2017-08-11
  • 打赏
  • 举报
回复
引用 9 楼 酒馆浪人的回复:
尽量减少宏的使用,并不是说他不方便,只是他容易出现错误比如#define PLUS(a) ((a)+(a)) 然后调用的时候用PLUS(a++)没有命名空间,容易冲突(比如经常冲突MAX, MIN)在预处理期就被处理了,编译出错后难以修复。constexpr, typedef/using, inline, enum可以替代绝大部分宏。
看到您列举了好几种代替define的方法,现在在学typedef,能请您多讲讲吗?
jena_wy 2017-08-09
  • 打赏
  • 举报
回复
SQ(i++)宏展开时((i++)*(i++)),所以做一次SQ(i++),i++了两次, i的值分别就是1,3,5.
找一缕阳光呀 2017-08-05
  • 打赏
  • 举报
回复
尽量减少宏的使用,并不是说他不方便,只是他容易出现错误比如#define PLUS(a) ((a)+(a)) 然后调用的时候用PLUS(a++)没有命名空间,容易冲突(比如经常冲突MAX, MIN)在预处理期就被处理了,编译出错后难以修复。constexpr, typedef/using, inline, enum可以替代绝大部分宏。
zhujinqiang 2017-07-26
  • 打赏
  • 举报
回复
这是个不好的编程习惯,不要使用宏#define
hongss 2017-07-25
  • 打赏
  • 举报
回复
你用这个宏,在每一次引用宏的时候,i++都执行了两次…… 实在要用宏的话,不要在宏里用类似i++这一类的方式,可以改成
#include<stdio.h>
#define SQ(y) ((y)*(y))
int main()
{
int i = 1;
while (i <= 5)
{
printf("%d\n", SQ(i));
i++;
}
return 0;
}
hongss 2017-07-25
  • 打赏
  • 举报
回复
引用 5 楼 mm2581883 的回复:
我没明白什么第五写法
孔乙己。。。
mm2581883 2017-07-24
  • 打赏
  • 举报
回复
我没明白什么第五写法
  • 打赏
  • 举报
回复
研究回字的第五种写法...
mm2581883 2017-07-23
  • 打赏
  • 举报
回复
我 晕
ooolinux 2017-07-22
  • 打赏
  • 举报
回复
用函数,不要用宏。
mm2581883 2017-07-21
  • 打赏
  • 举报
回复
求一下过程,最好理论具体一点推导说明的

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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