2010-10-15 680 views
2

我看到这个警告 如何解决它?警告:逗号表达式的左侧操作数没有效果

Temp += (Table[i, temp3] - (MSB[i]^0x1)); 

警告:逗号表达式的左侧操作数不起作用

+1

你必须告诉我们你想要'Table [i,temp3]'做什么。 – nos 2010-10-15 15:52:45

+4

警告告诉你'Table [i,temp3]'可能不是你的意思,因为它相当于'Table [temp3]'。如果'Table'是一个多维数组或指针数组,那么应该是'Table [i] [temp3]'? – aschepler 2010-10-15 15:53:30

+1

你能否提供如何定义表格? – 2010-10-15 15:54:12

回答

4

什么是表对象?如果是2维数组,那么你应该写

Table[i][temp3] 

在你的代码

[i, temp3] 

是一个逗号操作符 - 它计算的第一个参数(我),忽略它并返回TEMP3,所以你如果表是某种接受单一索引以访问其对象的容器,则可以放弃i

+0

非常感谢你,当我这样做解决Tablo [i] [temp3] – user477085 2010-10-15 16:05:02

+0

@user:考虑接受这个答案,然后。 (点击答案左边的绿色箭头。) – Bill 2010-10-15 16:38:48

2

逗号运算符从左到右评估任意数量的表达式,并生成最右边的表达式的值。

您在Table[i, temp3]中有一个逗号,与Table[temp3]完全相同。您是否试图执行Table[i][temp3]以访问二维数组中的某个位置?

编辑:我会解释一些,它可能对你有用。我不会100%准确,只是为了让你知道发生了什么。

为什么您必须使用两对括号才能访问“表格”中的“单元格”?使用一维数组,array[i]会将您置于阵列的第i个元素上,对吗?那么,有了一个二维数组,我们可以像这样称之为表格,table[i]也会将您置于第i个元素上。但是这一次,该元素是另一个数组:表的整个第i行。

因此,如果table[i]是表的一行,这只是另一个数组,你如何访问列j?那么,你必须去row[j],这是table[i][j]。在C中的多维数组是“数组数组”。

2

错误的语法 - 如果Table是一个二维数组,使用Table[i][temp3]

1

你是什么意思i, temp3?如果Table是二维数组,则访问元素(i,temp3)与Table[i][temp3]

编辑:这是什么i, temp3的真正含义是:由于我是缓慢的,足以通过几个答案被打败,我让我的答案是不只是一个早期的重复添加的东西?那么,C99标准说明:

“逗号操作者的左操作数被评价为空隙表达;还有其评价之后的 序列点然后右操作数进行评价;结果有其 类型和。值。如果试图修改逗号操作符的结果或在下一个序列点后访问它,则行为不确定。“

所以Table[i, temp3]的意思是“评估我,然后在Table访问元素编号temp3。因此,编译器警告你我没有做任何事情(因为评估我不会产生任何副作用)。

相关问题