2010-10-15 714 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。因此,編譯器警告你我沒有做任何事情(因爲評估我不會產生任何副作用)。

相關問題