C語言中的表達式是什么意思呀
表達式由運算符、常量及變量構成。C語言的表達式基本遵循一般代數規則,有幾點卻是與C語言緊密相關的,以下將分別加以討論。
2.7.1 表達式中的類型轉換
混合于同一表達式中的不同類型常量及變量,應均變換為同一類型的量。C語言的編譯程序將所有操作數變換為與最大類型操作數同類型。變換以一次一操作的方式進行。具體規則如下:
1)所有char及shortint型量轉為int型,所有float轉換為double。
2)如操作數對中一個為longdouble,另一個轉換為longdouble。①要不然,一個為double,另一個轉為double。②要不然,一個為long,另一個轉為long。③要不然,一個為unsigned,另一個轉為unsigned。
一旦運用以上規則。每一對操作數均變為同類型。注意,規則2)有幾種必須依次應用的條件。
圖2-1示出了類型轉換。首先,charch轉換成int,且floatf轉換成double;然后ch/i的結果轉換成double,因為f*d是double;最后由于這次兩個操作數都是double,所以結果也是double.
2.7.2構成符cast
可以通過稱為cast的構成符強迫一表達式變為特定類型。其一般形式為:
(type)expression(type)是標準C語言中的一個數據類型。例如,為確保表達式x/2的結果具有類型float,可寫為:
(float)x/2通常認為cast是操作符。作為操作符,cast是一元的,并且同其它一元操作符優先級相同。雖然cast在程序中用得不多,但有時它的使用的確很有價值。例如,假設希望用一整數控制循環,但在執行計算時又要有小數部分。
若沒有cast(float),就僅執行一次整數除;有了cast就可保證在屏幕上顯示答案的小數部分。
2.7.3空格與括號
為了增加可讀性,可以隨意在表達式中插入tab和空格符。例如,下面兩個表達式是相同的。
x=10/y*(127/x);x=10/y*(127/x);
冗余的括號并不導致錯誤或減慢表達式的執行速度。我們鼓勵使用括號,它可使執行順序更清楚一些。例如,下面兩個表達式中哪個更易讀一些呢?
x=y/2-34*temp&127;x=(y/2)-((34*temp)&127);
2.7.4C語言中的簡寫形式
C語言提供了某些賦值語句的簡寫形式。例如語句:
x=x+10;
在C語言中簡寫形式是:
:x+=10;
;
這組操作符對+=通知編譯程序將X+10的值賦予X。這一簡寫形式適于C語言的所有二元操作符(需兩個操作數的操作符)。在C語言中,
variable=variable1operatorexpression;
與variable1operator=expression相同。請看另一個例子:
x=x-100;
;
其等價語句是
x-=100;
C語言中表達式和表達式語句的區別(什么又叫做表達式)
表達式:
表達式是操作符、操作數和標點符號組成的序列,其目的是用來說明…個計算過程。
表達式可以嵌套,例如:2+3+(5*sizeof(int))/345。
表達式根據某些約定、求值次序、結合和優先級規則來進行計算。
所謂約定,即類型轉換的約定。例如:
float a;
a=5/2;
結果。得到值為2。5/2是整數除法取整, 因為5和2都是整數,不會由于a是float型而輕易改變運算的性質。
所謂求值次序,是指表達式中各個操作數的求值次序視編譯器不同而不同。見3.9節。
所謂結合性,是指表達式中出現同等優先級的操作符時,該先做哪個操作的規定。例如:
d=a+b-c; //C++規定,加減法先左后右,先做a+b,其結果再減去c
d=a=3; //C++規定,等號是先右后左。先做a=3,其結果再賦給d
所謂優先級,是指不同優先級的操作符,總是先做優先級高的操作。例如:
d=a+b*c; //乘法優先級比加法高。先做b*c,其結果再與a相加
表達式語句:
C++中所有的操作運算都通過表達式來實現。 由表達式組成的語句稱為表達式語句。
它由一個表達式后接一個分號“;”組成。
c語言的表達式是什么
推薦你一個比較全面的資料。
http://**view/*
在C語言中,有以下幾類表達式:
算術表達式、關系表達式、邏輯表達式、賦值表達式、逗號表達式。
而單目我想應該是指單目運算符。運算所需變量為一個的運算符叫單目運算符
有以下幾類:
邏輯非運算符【!】、
按位取反運算符【~】、
自增自減運算符【++ --】、
負號運算符【-】、
類型轉換運算符【(類型)】、
指針運算符和取地址運算符【*和&】、
長度運算符【sizeof】
c語言關系表達式
第一個程序,在VC中c的值為16(說實話沒搞懂,4+5+6多加了1),i的值為6(無論是++i,還是i++,加了多少次,后面的i的值就加了多少i=3+1+1+1)。在Turbo C中c的值為18(全部的自加執行完再相加,c=6+6+6),i的值為6(同VC)。
第二個程序,在VC中c的值為9(先取值再自加,但自加是在相加結束后c=3+3+3),i的值為6(同VC)。在TC中c的值為9(同VC),i的值為6(同VC)。
結論:不同的編譯器對++i和i++的復合運算編譯器會有不同的結果,因為C語言標準并沒有對此進行規定。
在C語言中
對于條件表達式b ? x : y,先計算條件b,然后進行判斷。如果b的值為true,計算x的值,運算結果為x的值;否則,計算y的值,運算結果為y的值。一個條件表達式絕不會既計算x,又計算y。條件運算符是右結合的,也就是說,從右向左分組計算。例如,a ? b : c ? d : e將按a ? b : (c ? d : e)執行。
<;表達式1> ? <;表達式2> : <;表達式3>;; "?"運算符的含義是:先求表達式1的值,如果為真,則執行表達式2,并返回表達式2的結果;如果表達式1的值為假,則執行表達式3,并返回表達式3的結果。
可以理解為條件 ? 結果1 : 結果2 里面的?號是格式要求。也可以理解為是不是條件成立,條件成立為結果1否則為結果2。
注意:在C語言中,結果1 和 結果2的類型必須一致。
a ? b : c簡單理解方式為:
if(a) {
return b;
} else {
return c;
}