刚看了c++ primer没几页就碰到一个问题,求教

flypig2003 2004-11-30 08:27:47
书上有个练习题说下面的代码有错

int *pi = new int( 10 );
int *pia = new int[ 10 ];
while ( *pi < 10 ) {
pia[ *pi ] = *pi;
*pi = *pi + 1;
}
delete pi;
delete [] pia;
但是我看不出来,而且我用c++ builderX编译也没有什么问题啊??
以前用Java这种问题碰不到,所以来请教大家
...全文
132 点赞 收藏 14
写回复
14 条回复
flypig2003 2004年12月01日
看来和我理解的差不多
没有出错,但是语句也没有什么作用
去候捷的网站应该有习题下载吧
回复 点赞
adherent 2004年11月30日
程序是对的
Lippman 的意思是在写类似这种要求判断条件的问题时,别把条件写错
所以说这个程序是错的,大概是说While循环体永远不会得到执行,与程序本意相反
回复 点赞
shine2000 2004年11月30日
哪有习题解答的电子书啊!给个地址吧
回复 点赞
烂笔头Danky 2004年11月30日
程序的语法是没有错误的,但这个程序并没有达到它试图要做的目的,因为*pi的值是10,所以下面的循环并没有被执行!

下载一个这本书的习题解答的电子书对照着看吧,有不明白的就可以立即看习题解答,侯捷每一题都解释得很清楚!
回复 点赞
xleicsu 2004年11月30日
*pi的值是10
程序将不执行while循环
回复 点赞
microhard 2004年11月30日
C++语言没有数祖下标检测机制,所以pia[ *pi ] = *pi;语句有问题
回复 点赞
daimi01171 2004年11月30日
*pi的出始直为10,不会执行循环体内的语句
回复 点赞
avalonBBS 2004年11月30日
while ( *pi < 10 )//问题在这,*pi的值为10,所以不会执行循环体内的语句
回复 点赞
ITSGrid 2004年11月30日
xunzi81(菜鸟迅子) 大概是对的,呵呵,第一个语句或许该为int *pi = new int( 0 );
否则死循环+数组越位。
回复 点赞
ITSGrid 2004年11月30日
*pi 的初始值为10
所以pia[*pi]数组越位了!
回复 点赞
北京迅哥 2004年11月30日
*pi的值不就是10吗?
while语句有什么用啊。
是不是原本打算是应该*pi赋值0的啊?
回复 点赞
fancard 2004年11月30日
不好意思,看错了,哈哈。
回复 点赞
fancard 2004年11月30日
无限循环,这一句:while ( *pi < 10 )永远成立。
回复 点赞
发动态
发帖子
C++ 语言
创建于2007-09-28

3.1w+

社区成员

24.8w+

社区内容

C++ 语言相关问题讨论,技术干货分享
社区公告
暂无公告