在C++中的使用比较运算符时,i++与i+1有什么区别?

这是用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在比较运算符中有什么区别吗?

阅读 2.5k
1 个回答

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.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题