搜索
查看: 1474|回复: 10
打印 上一主题 下一主题

define问题

[复制链接]
跳转到指定楼层
楼主
发表于 2013-8-22 21:29:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
15啊哈币

#include <stdio.h>
#include <stdlib.h>
#define AS a
int main()
{
        int a=AS;
    printf("%d",a);
        system("pause");
        return 0;
}




为何每次运行结果都是2?求详解

最佳答案

查看完整内容

用在线编译器 或者重启计算机
沙发
发表于 2013-8-22 21:29:52 | 只看该作者
纨绔☆子弟 发表于 2013-8-23 11:31
编译了5次,还是22

用在线编译器
或者重启计算机
板凳
发表于 2013-8-22 21:41:52 | 只看该作者
宏只做简单的文本替换
#define AS a
int a =AS;

预处理之后就是
int a = a;

这句会被处理成
int a;
a = a;

也就是
int a;

未赋值的局部变量的值是未指明的,可能是内存残留的任何值,在你实验的时候碰巧是2
地板
发表于 2013-8-22 22:00:01 | 只看该作者
这是一道大坑题目
5#
 楼主| 发表于 2013-8-23 09:27:01 | 只看该作者
本帖最后由 纨绔☆子弟 于 2013-8-23 09:29 编辑
rosynirvana 发表于 2013-8-22 21:41
宏只做简单的文本替换
#define AS a
int a =AS;

不好意思,本来分你可以拿走的,但我一运行又有了问题。。。。
@rosynirvana
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define AS a
  4. int main()
  5. {                int b;
  6.                 b=20;
  7.         int a=AS;
  8.     printf("%d",a);
  9.         system("pause");
  10.         return 0;
  11. }
复制代码
当定义一个无值的b时,输出2
赋值后输出又是40;
不会出现别的情况
难道内存只有2与40么?
求解
答出了给分啊~~~
O(∩_∩)O~
6#
发表于 2013-8-23 11:00:40 | 只看该作者
纨绔☆子弟 发表于 2013-8-23 09:27
不好意思,本来分你可以拿走的,但我一运行又有了问题。。。。
@rosynirvana当定义一个无值 ...

多重新编译几次,一般就能看到不同的值了
如果你不重新编译,变量指向的还是同一个地址,这个地址残留的值有可能还没变

或者用网上的编译器编译,例如codepad.org
7#
 楼主| 发表于 2013-8-23 11:31:39 | 只看该作者
rosynirvana 发表于 2013-8-23 11:00
多重新编译几次,一般就能看到不同的值了
如果你不重新编译,变量指向的还是同一个地址,这个地址残留的 ...

编译了5次,还是22
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define AS a
  4. int main()
  5. {                int b;
  6.                 b=20;
  7.         int a=AS;
  8.     printf("%d",a);
  9.         system("pause");
  10.         return 0;
  11. }
复制代码
8#
 楼主| 发表于 2013-8-23 12:46:27 | 只看该作者
rosynirvana 发表于 2013-8-23 11:53
用在线编译器
或者重启计算机

算了,给你分吧
9#
 楼主| 发表于 2013-8-23 12:46:32 | 只看该作者
rosynirvana 发表于 2013-8-23 11:53
用在线编译器
或者重启计算机

算了,给你分吧
10#
发表于 2013-8-23 16:57:19 | 只看该作者
本帖最后由 超神级 于 2013-8-23 17:01 编辑

                                                
11#
发表于 2013-11-22 10:02:55 | 只看该作者
超神级 发表于 2013-8-23 16:57

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

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表