LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 637|回复: 1

没想整型的定义位置也有特殊要求?

[复制链接]
发表于 2005-7-24 17:06:25 | 显示全部楼层 |阅读模式
下面这样是错误的:

  1. #include <stdio.h>
  2. void main () {
  3.         int i=1;
  4.         printf ("%d", i);
  5.         int s; /*这里出错*/
  6. }
复制代码

而下面这样是正确的:

  1. #include <stdio.h>
  2. void main () {
  3.         int i=1;
  4.                 int s; /*这样可以了*/
  5.         printf ("%d", i);
  6. }
复制代码

请问这是为什么?
谢谢。
发表于 2005-7-24 17:47:49 | 显示全部楼层
C99以前的C规定变量的定义必须在一个block的所有语句之前。但C99就没有这个规定的。你的编译器一定不支持C99。而且C99中的main必须返回一个int,不能是void。

这个block是这个概念(假设不是C99):

  1. #include <stdio.h>
  2. int main ()
  3. {
  4.         int i=1;
  5.         int ss;/*这样可以了*/
  6.         printf ("%d", i);
  7.         int s; /*这里出错*/
  8.         {
  9.               int a;/*这样可以了*/
  10.               a = 10;
  11.               int b; /*这里出错*/
  12.         }
  13.         return 0;
  14. }
复制代码

以上在C99里全对。
回复 支持 反对

使用道具 举报

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

本版积分规则

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