找回密码

碧海潮声大学生网

查看: 689|回复: 3
打印 上一主题 下一主题

〖讨论〗讨论下代码

[复制链接]
跳转到指定楼层
1#
发表于 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]);
}
该代码会不会编译通过,如果可以,那么输出结果是什么?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 顶 踩
2#
发表于 2006-11-27 12:37 | 只看该作者
应该会报错,呵呵
3#
发表于 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的。
4#
发表于 2006-11-27 12:53 | 只看该作者
我估计你的意思是这个:
void main()
{
int a[2],b[2];
a[1]=4;
printf("%d",b[-1]);
}
这样也是可以输出a[1]的值4
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋| 碧海潮声大学生网  

Copyright © 2001-2013 Comsenz Inc.   All Rights Reserved.

Powered by Discuz! X3.2( 浙ICP备11026473号 )

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