碧海潮声大学生网

标题: 〖讨论〗讨论下代码 [打印本页]

作者: only    时间: 2006-11-27 12:29
标题: 〖讨论〗讨论下代码
#include <stdio.h>
void main()
{
int a[2],b[2];
b[1]=4;
printf("%d",a[-1]);
}

该代码会不会编译通过,如果可以,那么输出结果是什么?
对于这种代码!delphi同样存在这个问题!有意思!  

================================================

#include <stdio.h>
void main()
{
int b[2],a[2];
b[1]=4;
printf("%d",a[-1]);
}
该代码会不会编译通过,如果可以,那么输出结果是什么?
作者: 笨笨啊    时间: 2006-11-27 12:37
应该会报错,呵呵
作者: 我是誰    时间: 2006-11-27 12:48
C语言一般编译是不会报错,但输出的结果就不一定了。取出的a[-1]是a之前的两个字节内存中的内容。不过像这种代码,如果改成:
void main()
{
int b[2],a[2];
b[1]=4;
printf("%d",a[3]);
}
是可以得到b[1]的值4的。
作者: 我是誰    时间: 2006-11-27 12:53
我估计你的意思是这个:
void main()
{
int a[2],b[2];
a[1]=4;
printf("%d",b[-1]);
}
这样也是可以输出a[1]的值4




欢迎光临 碧海潮声大学生网 (http://www.zjoubbs.com/) Powered by Discuz! X3.2