2014-10-04 132 views
-9

我在做C語言的一些任務並遇到了這個錯誤。這個任務是關於使用二維數組的矩陣。我希望程序在矩陣中向上移動1個槽,如果它到達頂部,即arr [0] [],則移動到同一列的底部,即arr [size-1] []。在這行代碼中,當i = 0時,我試圖將(size-1)賦給(i-1),但是我得到了「作爲賦值左操作數所需的左值」的錯誤。請提前幫助和感謝。「在C中需要作爲賦值左操作數的左值」在C

if (i==0){ 
    i-1 = size-1; 
} 
+3

想一想。給「(i-1)」分配一些東西是沒有意義的。 – 2014-10-04 10:03:12

+2

爲什麼不把'size'分配給'i'? – 2014-10-04 10:07:11

+3

「我試圖把(大小1)分配給(i-1)」 - 那甚至*意味着什麼? – 2014-10-04 10:18:16

回答

0

C標準ISO/IEC 9899:TC2 § 6.5.16/2賦值運算符

賦值操作員有修改的左值作爲其左 操作數。

§ 6.3.2.1/1左值,數組和功能指示器

左值是與一個對象類型或不完全型 空隙比其他的表達式;如果左值53)在評估 時未指定對象,則行爲未定義。當一個對象被稱爲 有一個特定的類型時,該類型由用於指定對象的左值指定。可修改的左值是一個左值,它不包含 具有數組類型,不具有不完整類型,不具有 常量限定類型,並且如果它是結構或聯合,則不具有 任何成員(包括遞歸,所有 中的任何成員或元素都包含集合或聯合),且爲const限定類型。

因爲i-1不是一個可指定的東西,左值,你不能分配給它。

+0

@Downvoter我可以問你爲什麼downvoted? – 4pie0 2014-10-04 18:34:26

+0

非常感謝0d0a。我再次讀這個,意識到我有多愚蠢。應該剛剛分配給我的大小。無論如何,很高興知道我無法爲i-1分配價值。 – 2014-10-06 17:33:04

-1

in your expression i-1 = size-1; i-1將產生一個整數,而size-1也會產生一個整數,並且在最後一步,編譯器會嘗試將一個整數賦值給一個非法的整數,因爲在賦值操作符的左側應該有一個變量內存位置,以便右側的值可以分配給它。但左側的整數常量沒有任何內存位置,因此顯示左值錯誤。

相關問題