我正在使用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',它是随机正整数的向量,未被使用。所有其他变量都是整数。
答案 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
}