首页 > 解决方案 > 在函数参数中,为什么 (i++) 在 (i+1) 运行时出现了一些错误

问题描述

案例1:当时我把i++放在函数参数上时,我得到了空白输出

案例 2:当我当时输入 i+1 而不是 i++ 时,我得到了正确的输出

#include <iostream>
using namespace std;

 
int foccurance(int arr[], int n, int i, int key)
{
    if (arr[i] == key)
    {
        return i;
    }
    if (i == n)
    {
        return -1;
    }
  ///here rather than i++ if i put i+1 then it runs properly
    return foccurance(arr, n, i++, key);
}

int main()
{
    int ar[] = {2, 5, 7, 4, 5, 6, 7};
    int n = sizeof(ar) / sizeof(int);
    int k;

    cout << "key val=" << endl;
    cin >> k;

    int ind = foccurance(ar, n, 0, k);
    cout << "your value is at index=" << ind;
    return 0;
}

标签: c++

解决方案


表达式i++i+1对不同事物的求值和运算之后,i将持有不同的值。

void f(int v)
{
    std::cout << v << std::endl;
}

int i = 0;
f(i+1); // Prints 1
std::cout << i << std::endl; // Prints 0
f(i++); // Prints 0
std::cout << i << std::endl; // Prints 1.

所以i+1

  • 不会修改i,但是
  • 它将评估为大于 1 的值i

另一方面,i++

  • 将修改i并设置为i+1,
  • i但它会在向其添加 1 之前评估为原始值。

推荐阅读