C語言語法問題,左運算元必須為左值是什麼意思啊 我該怎麼改啊?

2025-03-06 11:54:59 字數 4284 閱讀 6807

1樓:才慕悅臧優

左值就是賦值號「=」左邊的表示式。左值必須是乙個位址空間,而且是可以改變內容的位址空間。a+b表示的位址不確定。

同樣也有右值表達。通常所說的a=8,其實是將常量放到a對應的位址空間。a就是是拍叢棧上記憶體空間所對應的32為地返粗址的乙個別名。

所以a+b把兩個位址空間相加不能做為乙個確切的位址空漏賀鎮間,不可以做為左值。a+b可以作為右值,即將a和b中的內容值相加。

2樓:仍安吉湯文

就是左邊的數必須是變戚粗做量,只能是乙個。

比如b+c=9中,左邊不能有兩個凳虛變數,這樣時錯誤的高衡。滿意。

3樓:信必鑫服務平臺

所謂左值是指乙個能用於賦值運算左邊的表示式。左值必須能夠被修改,不能是常量。我們用變數作左值,還可以看到,指標和引用也可以作左值。改成b=9-c。

一般形式為:變數=表示式。它的作用是將乙個表示式的值賦給乙個左值。

計算賦值運算子右側表示式的值(「=為賦值運算子),將賦值運算子右側表示式的值賦給左側的變數,將賦值運算子左側的變數的值作為表示式的值。

例如:int a, b, c;

a=3;b=4;

c = a + b )*2*a - b) /得出14

4樓:miss黎的

就是說表示式左邊只能有乙個變數。

現在明顯你左邊有a,b兩個變數了。

你可以再命名乙個變數m=9

然後把a+b=9改為m=a+b

c語言中什麼是左運算元和右運算元?

5樓:網友

說明這個問題,需要先了解一下運算子的分類。

運算所需變數為乙個的運算子叫單目運算子,例如【!,運算所需變數為兩個的運算子叫做雙目運算子,絕大多數的運算子都是雙目運算子,如算術運算子,關係運算子,賦值運算子,邏輯運算子等等。

算所需變數為三個的運算子叫三目運算子:【?在雙目運算中,存在左右運算元,如:

int a ;

a=10 ; //這裡的賦值運算,處於=左邊的就叫」左運算元「,這裡是a 處於=右邊的就叫」右運算元「,這裡是10

6樓:幉楓

滿意答案 熱心問友 2009-08-24c語言不分這個吧。。。只有彙編才分這個。。。c語言的a=0a=a+2彙編表示就是 mov ax,0add ax,2很容易看出彙編一般指令都有兩個運算元的:

左運算元和右運算元,彙編術語就是目的運算元與源運算元 追問: 那麼說就是目的運算元是左運算元,源運算元是右運算元嗎? 回答:

你看得懂我寫的c語言例子沒有:int a = 0; /* a賦值為0,讓使用a和使用0一樣"好玩" */a = a + 1; /* 讓a加1,然後把值給a,執行了這條指令a就等於1了 */;;;mov ax,0;;;說明--解釋;mov 目的運算元,源運算元功能:把源運算元賦值給目的運算元;add 目的運算元,源運算元功能:

把源運算元的值加上目的運算元的值結果放到目的運算元;明白沒有。。。你為什麼對這個這麼感興趣呀! 追問:

我自學都學了彙編和c了,你是在學校學的吧,努力呀。

c++中提到的左值是什麼意思

7樓:網友

3全部在c語言中,左值(left value),指在賦值表示式(assignment expression)中作為將要賦予值的位址的表示式。

例如在賦值語句。

i = 10;

中i就是乙個左值,它必須是乙個變數,或是乙個解引用的指標(如下)int *p;

p = 10;

在c的yacc語法中,賦值表示式被這樣定義assignment_expression: conditional_expression| unary_expression assignment_operator assignment_expression

也就是說,在純語法的層面,左值必須是一元表示式。

8樓:網友

首先左值和右值是表示式。左值是可以放在賦值符號=左邊,邏輯上表示乙個位置,可以賦予值。而右值是可以放在賦值符號右面,邏輯上表示乙個值,因為不是個位置,那麼不能被賦值。

所以左值一定是右值,右值不一定是左值。

9樓:與子如初見

左值就是運算子左邊的表示式的值。

10樓:網友

可以放在賦值運算子的左邊的,可被賦值的。

c語言中什麼情況下是從右向左運算的?

11樓:惠企百科

c語言的入參是從右到左的,因此引數入棧的時候,是後進先出。這樣第乙個引數才能第乙個出行胡老來,檔公升所以c語言支援可變數量引數,能夠從左到右的順序讀取引數。

在c語言標準中好像並沒有看到有關表述。引數入棧的方式應該是作業系統所實現,由gcc等編譯器轉換成機器語言。

作為一門跨平臺的程式語言,一般都是很抽象的,儘量與底層脫鉤。比如在c語言標準的文件,對位元組,位元等的定義都是很抽象的,只是資料型別,與底層無關。

左移就是把乙個數的所有位都向左移動若干位,在c中用《運算子。

例如:int i = 1;

i = i <<2; /把i裡的值左移2位。

c語言,關於左值,右值的概念問題

12樓:網友

1、例如:a[3] = 5;*p = 55;

2、非常量的變數空間可以寫入,自然就是左值了3、右值指的是常量或者比如算術運算的中間結果,只能讀出,不能寫入,當然就是右值了。

一般而言,左值是可以作為右值的,左值的本意是隻寫,右值的本意是隻讀。

關於c++中,左值和右值問題

13樓:網友

++ 他們具有相同的優先順序。

所以 --x-- x兩邊的-- 就有相同的優先順序,無法判斷 先執行那邊。

而5*x++;的 乘法 和 --優先順序不一樣,有先後。

1級優先順序 左結合。

圓括號 下標運算子 ->指向結構體成員運算子 . 結構體成員運算子。

2級優先順序 右結合。

邏輯非運算子 ~ 按位取反運算子 ++自增運算子 --自減運算子 - 負號運算子 (型別) 型別轉換運算子 * 指標運算子 & 位址與運算子 sizeof 長度運算子。

3級優先順序 左結合。

乘法運算子 / 除法運算子 % 取餘運算子。

4級優先順序 左結合。

加法運算子 - 減法運算子。

5級優先順序 左結合。

左移運算子 >>右移運算子。

6級優先順序 左結合。

<=、>、= 關係運算子。

7級優先順序 左結合。

等於運算子 != 不等於運算子。

8級優先順序 左結合。

按位與運算子。

9級優先順序 左結合。

按位異或運算子。

10級優先順序 左結合。

按位或運算子。

11級優先順序 左結合。

邏輯與運算子。

12級優先順序 左結合。

邏輯或運算子。

13級優先順序 右結合。

條件運算子。

14級優先順序 右結合。

=- =* =/ =% = >= < = &= ^= |= 全為賦值運算子。

15級優先順序 左結合。

逗號運算子。

14樓:網友

你可以試試這樣兩條語句:

x++;//該語句報錯是內容是'--' needs l-value

x--;//該語句報錯是內容是'++' needs l-value

你會發現編譯器報錯說的都是前面的那個運算子報錯,前面那個運算子需要乙個左值。

x++和x--都是在執行該條語句之後才改變值的。也就是說在該條語句執行完之前x++和x--都是乙個右值。

所以當對乙個右值前加或者前減的時候自然會報錯。。。

15樓:網友

你說的是什麼意思啊,是不是把x++換成--x--啊,是的話就是歧義錯誤,要用()來作用處理的。

16樓:瓊頭浪子

(--x)--等價於(x-1)--等價於(x-1)=(x-1)-1;這顯然是不行的,因為等號的左邊必須是變數,而不能是表示式。

17樓:網友

--是左結合的,所以--x--等價於--(x--)

x--返回x的拷貝,然後x自減1。

返回的拷貝屬於右值,是不能改變的,所以錯了。

而第乙個表示式正式把它當右值,所以沒錯。

另外,根據優先順序,第乙個表示式相當於y=5*(x++)

C語言語法問題acb啥意思c語言裡ac,b是什麼意思?c語言新手謝了

沒有啥意思,就是簡單的運算。這裡涉及如下運算子,賦值 自增 括號,和逗號運算子。按照運算子的優先順序,先計算括號 也就是討論 c b 然後計算 也就是c和b分別自加。注意 然後談論逗號運算子,沒有意義,就是從左到右。所以最後賦值給a的是b 前面提到一個注意就是,雖然b自加了,但是他的寫法是 b 而不...

c語言語法問題,宣告以及星號的作用

宣告一個變數或者函式只是將變數名或者函式名識別符號的有關資訊告訴編譯器,使編譯器 認識 該識別符號,而並一定分配記憶體。在c語言中星號 一般有兩種意義,一種是和指標相關,用於宣告或者作為指標的間接運算子,一種是算術運算子,表示乘法。int main 我理解的 在宣告中用來宣告其後跟的變數是一個指標變...

C語言操作,C語言檔案操作

照你那樣說的插入是不太可能的,從底層看,檔案一般都是通過重寫插入刪除資料的。如果你要插入的話,就是把插入點之後的資料全都複製下來,然後寫上要插入的東西,然後再把複製的資料全部粘上。刪除也是一樣,把你要刪除的資料用後面的資料覆蓋上。無論什麼編輯器都是以這樣的原理實現的。可能它們用了這樣或那樣的演算法優...