C ++ unused表达式警告:交换数组元素

时间:2018-01-30 17:42:50

标签: c++ arrays

我正在使用C ++使用临时变量在数组之间有效地交换元素,但是我得到错误:表达式结果未使用。

以下是警告的产生方式:

for(i = 0; i < (n - 1); i++) {
          tmp = x[ind, i]
    x[ind, i] = x[ind, i + 1]
x[ind, i + 1] = tmp
}

问题在于'ind',它是随机正整数的向量,未被使用。所有其他变量都是整数。

3 个答案:

答案 0 :(得分:5)

x[ind, i]相当于ind; x[i],相当于x[i],因为ind没有副作用。编译器警告您没有使用表达式ind的结果。

  

在此上下文中,未使用的表达式是否会导致程序输出出现问题?

不是这样的。未使用的表达式通常意味着程序员犯了一个错误。当您打算访问其他内容时访问x[i]可能会导致程序输出出现问题。

  

我不确定如何压制警告

最好的方法是没有任何结果未被使用的。在这种情况下,您可以将x[ind, i]替换为x[i](以及其他类似的表达式),程序将保持等效,并且不会出现警告。但是,在您这样做之前,请考虑一下这是否是您打算做的。我怀疑你毕竟打算以这种或那种方式使用ind

答案 1 :(得分:2)

您可能打算根据命名约定来编写x[ind[i]],因为您现在只使用operator ,()并忽略ind的值。

答案 2 :(得分:0)

  

问题在于ind,它是随机正整数的向量,未被使用。所有其他变量都是整数。

听起来你需要使用:

for(i = 0; i < (n - 1); i++) {
    tmp = x[ind[i]];
    x[ind[i] = x[ind[i + 1]];
    x[ind[i + 1]] = tmp
}