免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1242 | 回复: 9
打印 上一主题 下一主题

想问个很傻的问题,我查了很多书都没有说这个…… [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-12-27 11:50 |只看该作者 |倒序浏览
main()
{
          int i=1;
        printf("%d\n",i);
        int j;
        if(i) {
                j=2;
                printf("%d\n",j);
          }
}
我编译这段代码的时候就会出错
# gcc test.c
test.c: In function 'main':
test.c:5: parse error before 'int'
test.c:7: 'j' undeclared (first use in this function)
test.c:7: (Each undeclared identifier is reported only once)
test.c:7: for each function it appears in.)
这是说我没定义j的类型,但如果我把第4行去掉,也就是在最开始定义j就没有错误了。
我的毕业设计要用c语言,可现在对c还不了解,是不是c语言必须在最开始就把所有的变量都定义了,不然就会出错?
另外我改成这样就不会有错了:
main()
{
        int i=1;
        printf("%d\n",i);
        if(i) {
                int j;
                printf("%d\n",j);
        }
}
但这样就会出同样的错误:
main()
{
        int i=1;
        printf("%d\n",i);
        if(i) {
                printf("%d\n",i);
                int j;
                printf("%d\n",j);
        }
}
真是让人郁闷呀``````
麻烦大家给我讲讲这是怎么回事!谢谢!
zkyguanl 该用户已被删除
2 [报告]
发表于 2003-12-27 12:02 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
3 [报告]
发表于 2003-12-27 12:42 |只看该作者

想问个很傻的问题,我查了很多书都没有说这个……

在C中对变量要在程序体——引用前加以定义

论坛徽章:
0
4 [报告]
发表于 2003-12-27 13:31 |只看该作者

想问个很傻的问题,我查了很多书都没有说这个……

原帖由 "zkyguanl" 发表:
C语言要求 在一个执行体中变量要先声明后使用,所以你的
printf("%d",i);
int j;
是错的,
在C语言中  { 开始一个执行体,  }结束一个执行体, 所以
if(i) {
int j;
printf("%d\n",j);
} 是正确的


同意。
C++则好像提倡 离使用处越近定义越好。

不过我喜欢C的规则。

论坛徽章:
0
5 [报告]
发表于 2003-12-27 13:44 |只看该作者

想问个很傻的问题,我查了很多书都没有说这个……

你用的是什么编译环境?
为什么我的gcc编译没有出错?

论坛徽章:
0
6 [报告]
发表于 2003-12-27 13:55 |只看该作者

想问个很傻的问题,我查了很多书都没有说这个……

你的编译选项是什么?

论坛徽章:
0
7 [报告]
发表于 2003-12-27 14:27 |只看该作者

想问个很傻的问题,我查了很多书都没有说这个……

同意zkyguanl的意见

论坛徽章:
0
8 [报告]
发表于 2003-12-27 14:34 |只看该作者

想问个很傻的问题,我查了很多书都没有说这个……

要在开始时定变量

论坛徽章:
0
9 [报告]
发表于 2003-12-27 16:40 |只看该作者

想问个很傻的问题,我查了很多书都没有说这个……

偶从来都是先比着书本抄代码(当然有些书里的代码本身就不完善)编译,没遇见类似问题。原来还有这么一说,又明确了些概念。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
10 [报告]
发表于 2003-12-27 21:53 |只看该作者

想问个很傻的问题,我查了很多书都没有说这个……

谢谢大家~~!!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP