首页 新闻 会员 周边

这段C错在哪了

0
悬赏园豆:5 [已解决问题] 解决于 2013-06-28 10:51
#include<stdio.h>
int main()
{
    int i[]={1,2,3,4};
    int*pi=i;
    for(int j=0;j<(sizeof(i)/sizeof(i[0]));j++)
    {
    printf("i[%d] address=%p,value=%d\n",j,(i+j),*(i+j));            
            }

    system("pause");
    }
后来把for中的int j=0;放在for的外面(前面)就行了,为什么不能放for里边呢?我记得当时在学校时候是可以的啊!
是不是有各种C?语法不太一样?比如TC,ANSI C等等??不是说C已经标准化了吗。。这是为什么呢?求指导,谢谢!
C
hexllo的主页 hexllo | 菜鸟二级 | 园豆:318
提问于:2013-06-28 09:03
< >
分享
最佳答案
0

 C 的第一个标准是由ANSI发布的。虽然这份文档后来被国际标准化组织(ISO)采纳并且ISO发布的修订版也被ANSI采纳了,但名称ANSI C(而不是 ISO C)仍被广泛使用。ANSI C现在被几乎所有广泛使用的编译器支持。现在多数C代码是在ANSI C基础上写的。

 

C89和C90

  1983年,美国国家标准协会组成了一个委员会,X3J11,为了创立 C 的一套标准。经过漫长而艰苦的过程,该标准于1989年完成,并在作为ANSI X3.159-1989 "Programming Language C"正式生效。这个版本的语言经常被称作"ANSI C",或有时称为"C89"(为了区别C99)。 在1990年,ANSI C标准(带有一些小改动)被美国国家标准协会采纳为ISO/IEC 9899:1990。这个版本有时候称为C90或者ISO C。因此,C89和C90通常指同一种语言。 传统C语言到ANSI/ISO标准C语言的改进包括:

  • 增加了真正的标准库  
  • 新的预处理命令与特性  
  • 函数原型允许在函数申明中指定参数类型  
  • 一些新的关键字,包括 const、volatile 与 signed  宽字符、宽字符串与字节多字符  
  • 对约定规则、声明和类型检查的许多小改动与澄清

C99

  2000年3月,ANSI 采纳了 ISO/IEC 9899:1999 标准。这个标准通常指C99。 C99新增了一些特性,如:  

  • 支持不定长的数组,即数组长度可以在运行时决定。  
  • 变量声明不必放在语句块的开头,for 语句提倡写成 for(int i=0;i<100;++i) 的形式,即i 只在 for 语句块内部有效。  
  • 初始化结构的时候允许对特定的元素赋值。  
  • 允许编译器化简非常数的表达式。
  • 取消了函数返回类型默认为 int 的规定。

  但是各个公司对C99的支持所表现出来的兴趣不同。当GCC和其它一些商业编译器支持C99的大部分特性的时候,微软和Borland却似乎对此不感兴趣,他们把更多的精力放在了C++上。

收获园豆:4
WuRang | 小虾三级 |园豆:1730 | 2013-06-28 09:21
其他回答(2)
0

标准C是不行的,但如果你把这个文件改名为.cpp啥的,使用c++编译器肯定可以

收获园豆:1
2012 | 园豆:21230 (高人七级) | 2013-06-28 09:07
0

一个是申明问题,看你用的什么IDE(本质是编译器的区别);

一个是头文件问题,stdlib.h 才能有system("pause")。

幻天芒 | 园豆:37175 (高人七级) | 2013-06-28 09:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册