鱼C论坛

 找回密码
 立即注册
查看: 3541|回复: 7

宏定义

[复制链接]
发表于 2012-5-4 22:16:01 | 显示全部楼层 |阅读模式
1鱼币
请问下下面这个程序中的宏定义是怎么赋值的?
想自己调试看看可没有调试过程,自己又看不懂汇编,求大虾给个解释,谢谢!
顺便问下,VC++ 6.0安装后里面的msdn还要自己安装吗?为什么我装的VC打不开MSDN,
是不是因为路径不对。我是装在F盘的没有装在C盘?
#include <stdio.h>
#define A(x) x;x;x;x;x;x;x;x;x;x;
int main(void)
{
int n=0;
A(A(A(printf("%d", n++))));
return 0;
}

最佳答案

查看完整内容

回答你的第一个问题,MSDN必须安装,当你把VC++6.0安装好的时候会继续弹出一个窗口,然后提醒安装MSDN。第二个问题有点不好解释,我慢慢说 首先我们把问题简化,不要弄这么多x;x;x;x;x;x;x; 把它改成 x;x; [*]A(printf("%d ", n++));这个语句应该很明显吧!相当于 printf("%d ", n++);printf("%d ", n++);这样的结果就是打印出答案:0 1; [*]进一步加深:A(A(printf("%d ", n++)));一层一层分析,把最外层的A拆开,相当 ...
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-5-4 22:16:02 | 显示全部楼层
回答你的第一个问题,MSDN必须安装,当你把VC++6.0安装好的时候会继续弹出一个窗口,然后提醒安装MSDN。第二个问题有点不好解释,我慢慢说
首先我们把问题简化,不要弄这么多x;x;x;x;x;x;x;
把它改成 x;x;
  1. #include <stdio.h>
  2. #define A(x) x;x;
  3. int main(void)
  4. {
  5. int n=0;
  6. A(A(A(printf("%d ", n++))));
  7. return 0;
  8. }
复制代码
  • A(printf("%d ", n++));这个语句应该很明显吧!相当于 printf("%d ", n++);printf("%d ", n++);这样的结果就是打印出答案:0 1;
  • 进一步加深:A(A(printf("%d ", n++)));一层一层分析,把最外层的A拆开,相当于A(printf("%d ", n++));A(printf("%d ", n++));这个结果应该也知道了吧! 相当于4个printf("%d ", n++);
  • 最后:A(A(A(printf("%d ", n++))));把最外层的A拆开,相当于A(A(printf("%d ", n++)));A(A(printf("%d ", n++)));这个 结果应该也知道了吧! 相当于8个printf("%d ", n++);
  • 最终的输出答案应该是;0 1 2 3 4 5 6 7
#define A(x) x;x; 相当于2^3(这是2的3次方)个
printf("%d ", n++);同理#define A(x) x;x;x;相当于 3^3个printf("%d ", n++);所以,所有的问题都可以解决,如果 宏定义后面有n个x;就相当于n^3个printf("%d ", n++);

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-5-5 13:02:11 | 显示全部楼层
写这样语法的人,我可以说是傻X。建议楼主不要学习这样语法。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-5-6 20:46:33 | 显示全部楼层
太强悍了  看好点的书吧  嘻嘻嘻嘻
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-5-8 22:23:28 | 显示全部楼层
怎么没人回答我,只回答第二个问题吧。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-5-8 22:24:18 | 显示全部楼层

那第二个问题能请教下吗?是不是因为安装路径有问题,我准备重装下
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-5-10 09:11:23 | 显示全部楼层
笑着流泪 发表于 2012-5-8 22:23
怎么没人回答我,只回答第二个问题吧。

我以前用vs2010旗舰版的可以再编译器中打开MSDN,不过那个太大了,还是另外装一个MSDN吧,小甲鱼老师就发了一个精简版的,够用了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-5-15 20:14:56 | 显示全部楼层
飘过,膜拜!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-13 05:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表