黑马程序员技术交流社区

标题: 【求助】帮看下这个C语言小程序 [打印本页]

作者: 兵临城下    时间: 2014-10-13 23:27
标题: 【求助】帮看下这个C语言小程序
在老师I讲课的视频上有一段小程序,是分析变量作用范围的。
我分析完毕,然后再win系统上运行VC++ 调试的时候,提示该程序不对。。。
明明就是老师给出来的程序,难道是同样的C程序,在WIn和MAC上运行有差别吗?
求助,大家帮忙看看。
#include <stdio.h>

int main()
{
    int a = 20;
    int score = a + 100;
    printf("%d\n", score);
   
    {
        int score = 50;
        {
            score = 10;
            printf("%d\n", score);
        }
        a = 10;
    }
   
    {
        score = a + 250;
        int score = 30;
        printf("%d", score);
    }
   
    printf("%d\n", score);
    return 0;
}

作者: 兵临城下    时间: 2014-10-13 23:29
我感觉是不是因为全局定义了一个score变量啦,然后在局部又重新定义了一次score,导致的问题?
作者: 兵临城下    时间: 2014-10-13 23:32
难道是这个程序在MAC上运行没有错误吗?
作者: duzhong    时间: 2014-10-13 23:33
应该没问题的吧
作者: 易拉罐    时间: 2014-10-13 23:35
同意楼上的谘法,你在代码段里重复定义score变量,导致报错的。
作者: 我说你是个逗比    时间: 2014-10-13 23:38
在mac上运行没问题,是不是编译器 的问题?
作者: 兵临城下    时间: 2014-10-14 00:02
还在调试中,同样的程序为什么用VC++就不对,用Xcode就对。。。。
我再研究研究,相信很快就有结果了
作者: 兵临城下    时间: 2014-10-14 00:03
我说你是个逗比 发表于 2014-10-13 23:38
在mac上运行没问题,是不是编译器  的问题?

我觉得极有可能
作者: 微雨独行    时间: 2014-10-14 00:05
Xcode 和 vc++ 不是完全兼容的  Xcode里面的 放到VC 有时候还会出乱码
作者: Lxy    时间: 2014-10-14 00:06
这个问题应该是编译器执行的C标准不同!
作者: 兵临城下    时间: 2014-10-14 00:15
结论出来了
后来我仔细分析,如果把程序中间一个程序块改为
   {
        int score = 30;
        score = a + 250;
        printf("%d", score);
    }
程序就会顺利通过编译。
经过测试发现,在VC中,在一个程序块内,如果变量声明放在了函数调用或者赋值语句的后面,那么编译的时候就会报错:missing ; before type
然后如果修改将变量声明放在函数调用或者赋值语句之前,就会顺利通过编译。
这个问题在gcc编译C程序的时候都不会出现,只有在VC编译C的时候才会出现。
原来纠结半天的问题出在这里了。
终于搞明白了。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2