简单的代码,报错

cfj007135 2010-11-09 02:25:47
本人系新人,初用VC6.0,写了份代码,如下:


#include <stdio.h>

int main()
{
int h = 1;
printf( "%p\n", &h );

int i = 2;
printf( "%d\n", i );

return 0;
}



但报错了:


C:\Documents and Settings\Administrator\main.c(26) : error C2143: syntax error : missing ';' before 'type'
C:\Documents and Settings\Administrator\main.c(27) : error C2065: 'i' : undeclared identifier



请问为什么?谢谢!
...全文
161 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
千杯不醉-sen 2010-11-09
  • 打赏
  • 举报
回复
当然,再*.c里面可以定义局部变量。
千杯不醉-sen 2010-11-09
  • 打赏
  • 举报
回复
C语言,即为*.c的文件要先定义后使用。
*.cpp可以随意。
cfj007135 2010-11-09
  • 打赏
  • 举报
回复
明白了,呵呵,结贴给分!
zhutianjin4355255 2010-11-09
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 cfj007135 的回复:]
引用 7 楼 zhutianjin4355255 的回复:
C的编译器的格式,变量需要定义在前面,如果是C++编译器的话你的写法就不报错了


关于这点,想问下,那为什么这样就不报错了呢?

C/C++ code

#include <stdio.h>

int main()
{
int h = 1;

printf( "%d\n", h );

……
[/Quote]


因为你进入主函数就定义int h = 1;
所以就不会报错了;

如果楼主非要那么写,也行,加个大括号

#include <stdio.h>

int main()
{
int h = 1;
printf( "%p\n", &h );
{
int i = 2;
printf( "%d\n", i );
}

return 0;
}
Ionstorm2 2010-11-09
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 cfj007135 的回复:]

引用 7 楼 zhutianjin4355255 的回复:
C的编译器的格式,变量需要定义在前面,如果是C++编译器的话你的写法就不报错了


关于这点,想问下,那为什么这样就不报错了呢?
C/C++ code

#include <stdio.h>

int main()
{
int h = 1;

printf( "%d\n", h );

return ……
[/Quote]

晕,你这样写是符合上面的说法的啊,为什么要报错??你的变量定义确实在使用之前了啊~~
cfj007135 2010-11-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zhutianjin4355255 的回复:]
C的编译器的格式,变量需要定义在前面,如果是C++编译器的话你的写法就不报错了
[/Quote]

关于这点,想问下,那为什么这样就不报错了呢?

#include <stdio.h>

int main()
{
int h = 1;

printf( "%d\n", h );

return 0;
}
Ionstorm2 2010-11-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xiexiufeng 的回复:]

在C语言中,所有变量都必须先声明后使用。声明通常放在函数起始处,在任何可执行语句之前。
在C++没有这个限制.
[/Quote]

6L正解
cfj007135 2010-11-09
  • 打赏
  • 举报
回复
没报错的可能原因,是文件以.cpp结尾,试试文件以.c结尾

不好意思,没说清楚
luciferisnotsatan 2010-11-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 try325 的回复:]

引用 2 楼 zhutianjin4355255 的回复:

int i = 2;
定义到前面去

#include <stdio.h>

int main()
{
int h = 1;
int i = 2;

printf( "%p\n", &amp;h );
printf( "%d\n", i );

return 0;
}

变量定义放在函数执行……
[/Quote]
vc6好像没这问题
xuwening 2010-11-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xiexiufeng 的回复:]

在C语言中,所有变量都必须先声明后使用。声明通常放在函数起始处,在任何可执行语句之前。
在C++没有这个限制.
[/Quote]

正解~~~~~~~~

生命要放在块作用域的起始部分,如函数开始,if while 等开始处。
gracedida 2010-11-09
  • 打赏
  • 举报
回复
试验了,没有问题
無_1024 2010-11-09
  • 打赏
  • 举报
回复
VC6.0没报错
zhutianjin4355255 2010-11-09
  • 打赏
  • 举报
回复
C的编译器的格式,变量需要定义在前面,如果是C++编译器的话你的写法就不报错了
xiexiufeng 2010-11-09
  • 打赏
  • 举报
回复
在C语言中,所有变量都必须先声明后使用。声明通常放在函数起始处,在任何可执行语句之前。
在C++没有这个限制.
cfj007135 2010-11-09
  • 打赏
  • 举报
回复

#include <stdio.h>

int main()
{
int h = 1, i = 2;
printf( "%p\n", &h );
printf( "%d\n", i );

return 0;
}


另外这样也不会报错,怪事!
能解释下,啥原因吗?
cfj007135 2010-11-09
  • 打赏
  • 举报
回复
回复2,3楼,试了下,确实不报错了,能简单的说下,是什么原因吗?
try325 2010-11-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhutianjin4355255 的回复:]

int i = 2;
定义到前面去

#include <stdio.h>

int main()
{
int h = 1;
int i = 2;

printf( "%p\n", &h );
printf( "%d\n", i );

return 0;
}
[/Quote]
变量定义放在函数执行的前面
zhutianjin4355255 2010-11-09
  • 打赏
  • 举报
回复
int i = 2;
定义到前面去


#include <stdio.h>

int main()
{
int h = 1;
int i = 2;

printf( "%p\n", &h );
printf( "%d\n", i );

return 0;
}

我是小数位 2010-11-09
  • 打赏
  • 举报
回复
對的,沒錯誤,可能是自己的編譯器有問題吧!

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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