typedef
其作用是為了一種資料型別定義乙個新名字。
列舉enum
聯合體union 聯合名
成員表3.2條件運算子和表示式
如果在條件語句中,只執行單個賦值語句時,常可使用條件表示式來實現,不但是程式簡潔,也可以提高執行效率。
條件運算子為?和:,它是乙個三目運算子,即使有三個參與運算的量。有條件運算子組成條件表示式的一般形式為
表示式1? 表示式2: 表示式3
其求值規則為:如果表示式1的值為真,則以表示式2的值作為條件表示式的值,否則以表示式2的值作為整個條件表示式的值。
例如:if(a>b)
else
可用條件表示式為max=(a>b)?a:b;
執行該語句的語義是:如a>b為真,則把a賦予max,否則把b賦予max。
注:(1)條件運算子的運算優先順序地獄關係運算子的算命術運算子,但高於賦值符。因此max=(a>b):a:b 可以去掉括號為 max=a>b?a:b
(2)條件運算子「?」和「:」是一對運算子,不能分開使用。
(3)條件運算子的結合方法是自右至左
a>b?a:c>d?c:d 應理解為 a>b?a:(c>d?c:d)
3.3 ++、--操作符
int i=3;
(++i)+(++i)+(++i);
表示式的值為多少?15嗎?16 嗎?18嗎?其實對於這種情況,c語言標準並沒有作出規定。有點編譯器計算出來為18,因為i經過3次自加後變為6,然後3個6相加得18;而有的編譯器計算出來為16(如visual c++6.0),先計算前兩個i的和,這時候i自加兩次,2
個i的和為10,然後再加上第三次自加的i得16。其實這些沒有必要辯論,用到哪個編譯器寫句**測試就行了。但不會計算出15的結果來的。
++、--作為字首,我們知道是先自加或自減,然後再做別的運算但是作為字尾時,到底什麼時候自加、自減?這是很多初學者迷糊的地方。假設i=0,看例子:
//例a
j=(i++,i++,i++);
//例b
for(i=0;i<10;i++)
//例c
k=(++i)+(++i)+(++i);
你可以試著計算它們的結果。例子為逗號表示式,i在遇到每個逗號後,認為本計算單位已經結束,i這時候自加。關於逗號表示式與「++」或「--」的連用,還有乙個比較好的例子
int x;
int i=3;
x=(++i,i++,i+10);
問x的值為多少?i的值為多少?
按照上面的講解,可以很清楚地知道,逗號表示式中,i在遇到每個逗號後,認為本計算單位已經結束,i這時候自加,所以,本例子計算完後,i的值為5,x的值為15。
(1)例子i與10進行比較之後,認為本計算單位已經結束,i這時候自加。
(2)例子i遇到分號才認為本計算單位已經結束,i這時候自加。
也就是說,字尾運算是在本計算單位計算結束之後再自加或自減。c語言裡的計算單位
大體分為以上3類。
列舉和聯合體
列舉 列舉顧名思義就是一一枚舉。把可能的取值一一枚舉出來。比如,現實生活中 列舉的定義 enum day 星期 enum 性別 enum color 顏色 以上定義的 enum day,enum enum color 都是列舉型別。中的內容是列舉型別的可能取值,也叫列舉常量。這些可能取值都是有值的,...
列舉和聯合體
1 什麼是列舉 列舉顧名思義就是一一枚舉。把可能的取值一一枚舉。enum color 顏色 以上定義的 enum color 是列舉型別。中的內容是列舉型別的可能取 值,也叫列舉常量 2 列舉的值enum color 顏色 3 列舉的優點 1 增加 的可讀性和可維護性 2 和 define定義的識別...
列舉 聯合體 遞迴
一.列舉 1.列舉是乙個型別 乙個常量陣列 2.關鍵字 enum 1 enum week 3.宣告乙個enum week w 那麼sizeof w 的大小是4 w可以等於以上七個裡面中的任意乙個 只能在範圍之內賦值 預設情況下 不賦值第乙個從0開始 mon 0 tue 1 以此類推 但例如對thu進...