c語(yǔ)言逗號(hào)表達(dá)式規(guī)則 c語(yǔ)言賦值語(yǔ)句規(guī)則?
c語(yǔ)言賦值語(yǔ)句規(guī)則?由于賦值字符“=”右側(cè)的表達(dá)式也可以是另一個(gè)賦值表達(dá)式,因此下面的形式變量=(variable=expression)為真,從而形成嵌套情況。展開后的一般形式是:variable=
c語(yǔ)言賦值語(yǔ)句規(guī)則?
由于賦值字符“=”右側(cè)的表達(dá)式也可以是另一個(gè)賦值表達(dá)式,因此下面的形式變量=(variable=expression)為真,從而形成嵌套情況。展開后的一般形式是:variable=variable==表達(dá)式,例如:a=b=C=D=e=5,根據(jù)賦值運(yùn)算符的右聯(lián)接等價(jià)于:e=5,D=e,C=D,b=C,a=b]。請(qǐng)注意將初始值賦給變量和variable==description=中的賦值語(yǔ)句之間的區(qū)別。將初始值賦給變量是變量描述的一部分。具有初始值的變量和其他類似變量必須用逗號(hào)分隔,而賦值語(yǔ)句必須以分號(hào)結(jié)尾。例如:int a=5,B,C
在變量描述中,不允許連續(xù)給多個(gè)變量賦值。如果以下描述錯(cuò)誤:int a=b=C=5必須寫成int a=5,b=5,C=5,賦值語(yǔ)句允許連續(xù)賦值。
注意賦值表達(dá)式和賦值語(yǔ)句之間的區(qū)別。賦值表達(dá)式可以出現(xiàn)在任何允許表達(dá)式出現(xiàn)的地方,但賦值語(yǔ)句不能出現(xiàn)。
以下語(yǔ)句是合法的:
if((x=y5)>0)z=x
這里(x=y5)是賦值表達(dá)式。該語(yǔ)句的功能是,如果表達(dá)式x=y5大于0,則z=x。
在C語(yǔ)言賦值語(yǔ)句中,給多個(gè)變量賦值,用逗號(hào)隔開,豈不是相當(dāng)于一個(gè)逗號(hào)表達(dá)式?
我無(wú)法理解。逗號(hào)表達(dá)式是聲明變量的合法組合。多個(gè)有效的運(yùn)算表達(dá)式用逗號(hào)分隔,而int a=1,B=2只能有一種解釋,即在聲明和初始化變量時(shí),同一類型的多個(gè)變量可以用逗號(hào)分隔,寫在同一類型字符之后,最后用分號(hào)結(jié)束。對(duì)于上面的聲明,如果聲明一個(gè)int c,那么c=(a=1,B=2)在運(yùn)算之后,c=2,因?yàn)椋╝=1,B=2)在最右邊的逗號(hào)之后取表達(dá)式的運(yùn)算結(jié)果。所以,我認(rèn)為C=(a=1,B=2)中的(a=1,B=2)是逗號(hào)表達(dá)式,int a=1,B=2不是逗號(hào)表達(dá)式!事實(shí)上,所謂計(jì)算機(jī)語(yǔ)言的“語(yǔ)法”只是一些書寫規(guī)則。還有許多甚至是不靈活的,比如char*P和*Q。語(yǔ)法上說(shuō),*屬于char,但不屬于下面的變量。但是如果它被寫成char*P和Q,那么Q就不被認(rèn)為是指針。我們?cè)趺茨芾斫饽??否則,像char*P,W,x這樣的語(yǔ)句將被寫成兩行:char*PChar,W,x
在C語(yǔ)言中,多個(gè)表達(dá)式可以用逗號(hào)分隔,其中用逗號(hào)分隔的表達(dá)式的值是分開結(jié)算的,但是整個(gè)表達(dá)式的值是最后一個(gè)表達(dá)式的值。假設(shè)B=2,C=7,d=5,A1=(B,C--,d3)A2=B,C--,d3。對(duì)于第一行代碼,有三個(gè)表達(dá)式用逗號(hào)分隔,因此最終值應(yīng)該是最后一個(gè)表達(dá)式的值,即d3是8,因此A1=8。對(duì)于第二行代碼,還有三個(gè)表達(dá)式。此時(shí),三個(gè)表達(dá)式是A2=B,C--,d3(這是因?yàn)橘x值運(yùn)算符的優(yōu)先級(jí)高于逗號(hào)運(yùn)算符),因此最終表達(dá)式值是8,但A2=3。逗號(hào)運(yùn)算符的優(yōu)先級(jí)最低