这是用C++写的数组线性表的插入函数,其中第二个if条件中,如果用 listSize+1 是没有问题的,如果用 listSize++ 程序执行是有错误的(非编译错误)void insert(int location, elementtype theElement)
{ if(location > arrayLength - 1) cout<<"List is full."<<endl; if(location > (listSize+1) || location < 1 ) cout<<"Please enter correct value."<<endl; else
{ for(int n = listSize; n >= location; n--)
elements[n++] = elements[n];
elements[location] = theElement;
listSize++;
}
}i++和i+1在比较运算符中有什么区别吗?
1 回答
缥缈止盈
TA贡献2041条经验 获得超4个赞
The statement:
if(location > listSize++ || location < 1 ) cout<<"Please enter correct value."<<endl;
can be considered like
if(location > listSize || location < 1 ) { ++listSize; cout<<"Please enter correct value."<<endl; }
From the C++ Standard (5.2.6 Increment and decrement)
1 The value of a postfix ++ expression is the value of its operand. [ Note: the value obtained is a copy of the original value —end note ]...
So, it will change listSize's value(because of ++listSize;
), which is not you hope to see.
- 1 回答
- 0 关注
- 1044 浏览
添加回答
举报
0/150
提交
取消