c語言表達式賦值表達式
㈠ c語言題:符合C語言語法的賦值表達式是
B
C
=左邊必須是左值(可以被賦值的值,也被稱作變數表達式,變數、數組表達式、指針表達式的值都是左值。但是算數、邏輯運算表達式、函數表達式的值不是左值所以不能被賦值)所以A、D錯誤
C是逗號表達式。(逗號表達式的值和類型都由逗號右邊的表達式決定,就是說連續逗號表達式比如a,b,c,d等價於a,(b,(c,(d)))
-
賦值僅僅是一種表達式,也有值和類型a
=
1。的值是1類型是int,所以完全可以賦值給另一個int類型變數b
=
(a
=
1)也就是b
=
a
=
1。不存在不可以連續賦值的說法。
括弧表達式也是一樣。只要有類型和值就能賦值給對應的變數這是賦值的原則。
B和C的寫法在標准C編譯器上都是可以編譯通過的。
㈡ 在C語言中11種賦值運算符的具體含義,用法
1.六個變數=表達式的賦值:
=是賦值運算符,/=是除後賦值,*=是乘後賦值,
%=是取模後賦值,+=是加後賦值,-= 是減後賦值,
2.<<=是左移後賦值,變數<<=表達式 左移就是將左邊的數的二進制各位全部左移若干位,右邊的數指定移動位數,高位丟棄,低位補0, 移幾位就相當於乘以2的幾次方。
3.>>=是右移後,變數>>=表達式,右移運算符是用來將一個數的各二進制位右移若干位,移動的位數由右操作數指定(右操作數必須是非負值),移到右端的低位被舍棄,對於無符號數,高位補0。
對於有符號數,某些機器將對左邊空出的部分用符號位填補(即「算術移位」),而另一些機器則對左邊空出的部分用0填補(即「邏輯移位」);
對無符號數,右移時左邊高位移入0;對於有符號的值,如果原來符號位為0(該數為正),則左邊也是移入0。
如果符號位原來為1(即負數),則左邊移入0還是1,要取決於所用的計算機系統,系統移入0或系統移入1。
移入0的稱為「邏輯移位」,即簡單移位;移入1的稱為「算術移位」。
4.&= 按位與後,變數&=表達式,按位與是指:參加運算的兩個數據,按二進制位進行「與」運算。
如果兩個相應的二進制位都為1,則該位的結果值為1;否則為0。
5.^= 按位異或後賦值,變數^=表達式,參與運算的兩個量按照對應的位進行異或運算,且
0^0→0, 0^1→1, 1^0→1, 1^1→0
一個數與0異或仍保持不變,如a^0=a
一個數與自己異或結果為0,如a^a=0
11.|=是按位或後賦值,變數|=表達式,參與運算的兩個量按照對應位進行或運算,且0|0→0, 0|1→1, 1|0→1, 1|1→1。
(2)c語言表達式賦值表達式擴展閱讀:
1.賦值表達式的功能是計算表達式的值再賦予左邊的變數。
賦值運算符具有右結合性,因此a=b=c=5可理解為a=(b=(c=5))。
2.在其它高級語言中賦值構成了一個語句,稱為賦值語句;
而在C語言中,
把「=」定義為運算符,從而組成賦值表達式。
3.凡是表達式可以出現的地方均可出現賦值表達式。
例如:式子x=(a=5)+(b=8)是合法的。它的意義是把5賦予a,8賦予b,再把a,b相加,和賦予x,故x應等於13。
4.在C語言中也可以組成賦值語句。
按照C語言規定,任何錶達式在其未尾加上分號就構成為語句。
㈢ 當C語言中if語句中的條件表達式為常量或賦值表達式時的意義,分別舉例解釋
//我舉個例子你就明白了
//賦值運算符=運算優先順序是從右到左,然後看下面代碼
inta,b;
b=(a=1);
//編譯器編譯得到如下代碼:
mov DWORDPTR_a$[ebp],1
mov eax,DWORDPTR_a$[ebp]
mov DWORDPTR_b$[ebp],eax
①a=1
②b=a
如此推斷,(a=1)的值即a的值,而a的值為1
所以if(1)不用說了,非零成立.
那麼if(a=1)也不用說了吧?表達式的值是a,而a=1,相當於if(1),非零成立.
㈣ C語言中賦值語句有什麼規則要求
賦值語句是由賦值表達式再加上分號構成的表達式語句。 其一般形式為: 變數=表達式。
由於在賦值符「=」右邊的表達式也可以又是一個賦值表達式,因此,下述形式變數=(變數=表達式);是成立的,從而形成嵌套的情形。其展開之後的一般形式為:變數=變數=…=表達式;
在變數說明中,不允許連續給多個變數賦初值。如下述說明是錯誤的:inta=b=c=5必須寫為inta=5,b=5,c=5;而賦值語句允許連續賦值。
賦值語句
將確定的數值賦給變數的語句叫做賦值語句。各程序設計語言有自己的賦值語句,賦值語句也有不同的類型。所賦「值」可以是數字,也可以是字元串和表達式。
注意很多語言都使用「等於號」(即「=」)來作為賦值號,所以可能和和平時的理解不同,在使用的時候應予以注意。
以上內容參考:網路-賦值
㈤ C語言賦值運算符與賦值表達式
我們都知道基本的賦值運算符是"=",他的優先順序別低於其他的運算符,所以對該運算符往往最後讀取。下面和大家分享一下C語言賦值運算符與賦值表達式,一起來看看吧!
C語言賦值運算符與賦值表達式1
一、賦值運算符與賦值表達式
賦值符號「=「就是賦值運算符,作用是將一個數據賦給一個變數或將一個變數的值賦給另一個變數,由賦值運算符組成的表達式稱為賦值表達式。一般形式為:
變數名=表達式
在程序中可以多次給一個變數賦值,每賦一次值,與它相應的存儲單元中的數據就被更新一次,內存中當前的數據就是最後一次所賦值的那個數據。
例:a=12;此表達式讀作「將10的值賦值給變數a」。
說明:
a、如果賦值號兩邊的運算對象類型不一致,系統會自動進行類型轉換,轉換的規則:將賦值號右邊表達式的值的類型轉換成賦值號左邊變數的類型,
例:inty=3.5;在變數y中最終存儲的是整數3。
b、可以將復製表達式的.值再賦值給變數,形成連續賦值。
例如:x=y=25是一個連續賦值表達式,x=y=25等價於x=(y=25),所以表達式x=y=25最終的值為25。
二、復合的賦值運算符
在賦值運算符之前加上其他運算符可以構成復合賦值運算符。其中與算術運算有關的復合運算符是:+=,—=,x=,/=,%=。
兩個符號之間不可以有空格,復合賦值運算符的優先順序與賦值運算符的相同。表達式n+=1等價於n=n+1,作用是取變數n中的值增1再賦給變數n,其他復合的賦值運算符的運算規則依次類推。
如求表達a+=a—=axa的值,其中a的初值為12。
步驟:
(1)先進行「a—=axa「運算,相當於a=a—axa=12—144=—132。
(2)再進行「a+=—132「運算,相當於a=a+(—132)=—132—132=—264。
C語言賦值運算符與賦值表達式2
其一般形式為:
變數=表達式
例如:
x=a+b
w=sin(a)+sin(b)
y=i+++--j
賦值表達式的功能是計算表達式的值再賦予左邊的變數。賦值運算符具有右結合性,因此a=b=c=5可理解為a=(b=(c=5))。
在其它高級語言中,賦值構成了一個語句,稱為賦值語句。 而在C中,把「=」定義為運算符,從而組成賦值表達式。 凡是表達式可以出現的地方均可出現賦值表達式。
例如:式子x=(a=5)+(b=8)是合法的。它的意義是把5賦予a,8賦予b,再把a,b相加,和賦予x,故x應等於13。
在C語言中也可以組成賦值語句,按照C語言規定,任何錶達式在其未尾加上分號就構成為語句。因此如x=8;a=b=c=5;都是賦值語句,在前面各例中我們已大量使用過了。
類型轉換
如果賦值運算符兩邊的數據類型不相同,系統將自動進行類型轉換,即把賦值號右邊的類型換成左邊的類型。具體規定如下:
實型賦予整型,捨去小數部分。
整型賦予實型,數值不變,但將以浮點形式存放,即增加小數部分(小數部分的值為0)。
字元型賦予整型,由於字元型為一個位元組,而整型為二個位元組,故將字元的ASCII碼值放到整型量的低八位中,高八位為0。整型賦予字元型,只把低八位賦予字元量。
【例3-18】
#include
int main(void){
int a,b=322;
float x,y=8.88;
char c1=k,c2;
a=y;
x=b;
a=c1;
c2=b;
printf("%d,%f,%d,%c",a,x,a,c2);
return 0;
}
本例表明了上述賦值運算中類型轉換的規則。a為整型,賦予實型量y值8.88後只取整數8。x為實型,賦予整型量b值322, 後增加了小數部分。字元型量c1賦予a變為整型,整型量b賦予c2 後取其低八位成為字元型(b的低八位為01000010,即十進制66,按ASCII碼對應於字元B)。
注意:經大家反饋,筆者發現上面的例子容易造成誤解,現已對代碼進行更改,更改時間 2014-07-04 09:12:45,看評論的讀者請注意評論時間,不要混淆。
更改後的代碼如下:
#include
int main(void){
int a,c,b=322;
float x,y=8.88;
char c1=k,c2;
a=y;
x=b;
c=c1;
c2=b;
printf("a=%d, x=%f, c=%d, c2=%c ", a, x, c, c2);
return 0;
}
輸出結果:
a=8, x=322.000000, c=107, c2=B
復合的賦值運算符
在賦值符「=」之前加上其它二目運算符可構成復合賦值符。如+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=。
構成復合賦值表達式的一般形式為:
變數 雙目運算符=表達式
它等效於
變數=變數 運算符 表達式
例如:
a+=5 等價於 a=a+5
x*=y+7 等價於 x=x*(y+7)
r%=p 等價於 r=r%p
㈥ c語言的If表達式可以有賦值語句嗎
if(a=2)
{
b=2;
c=4;
}
else d=3;
這個語句沒有語法錯誤(可能會有警告),是可以執行的。
但是這個語句永遠沒有機會執行else部分。
a=2賦值表達式的計算結果就是2,當這個表達式出現在if語句邏輯表達式位置上的時候,它的計算結果是被當作邏輯值處理的,在C語言中用整型數表示邏輯量,非零表示「真」,所以這是一個永真式;這個if的邏輯條件永遠不會為假。
也就是說,這里所表達的邏輯條件並不是「a的內容是否等於2」,而是向變數a中送入數據2。
㈦ C語言中賦值語句的語法是怎樣的
賦值的語法規則就是:
數據類型 變數名 = 表達式
表達式可以理解為一個值或一個計算公式就行,表達式加一個英文符號分號就是語句。
例如:
我們今天要用到的,我買了幾斤蘋果。
就可以這樣寫:
方式一:
Int apple_count = 0; //告訴計算機apple_count是用來存買蘋果的斤數的,默認為0;
方式二:
Int apple_count; //告訴計算機apple_count是用來存買蘋果的斤數的,以後再告訴計算機它等於多少,現在不知道;
(7)c語言表達式賦值表達式擴展閱讀
1、C語言中,賦值運算的操作是有方向的,即將右側表達式的值(也稱為右值)賦值左側的變數,只能是標識一個特定存儲單元的變數名。
2、由於變數名只能出現在賦值運算符的左邊,因此它也被稱為左值;由於常量只能出現在賦值運算符的右邊,因此它也被稱為右值。左值可以用作右值,但右值不能用作左值。
㈧ c語言中賦值表達式的值是什麼,就比如關系表達式的值是一個邏輯值
賦值表達式的值類型
也就是賦值的左值類型。
注意是最左
比如
a=b=c=d;
那麼表達式的值,就是a賦值後的值。