874-2021年真題-填空題1-自增(++)、自減(--)條件運算符和條件表達式
# 自增、自減
++i,- -i(在使用i之前,先使i的值加(減)1)
i++,i--(在使用i之后,使i的值加(減)1)
++i是先執(zhí)行i=i+1再使用i的值
i++是先使用i的值,再執(zhí)行i=i+1
i=3;
printf("%d",++i);
輸出的結果是4
printf("%",i++)
輸出的結果是3
# 條件運算符和條件表達式
(a>b)?a:b
是一個條件表達式
?是條件運算符
如果為真,則條件表達式的值等于a,否則為b
條件運算符由兩個符號(?和:)組成,必須一起使用。要求有三個操作對象,稱為三目(元)運算符,它是C語言中唯一一個三目運算符。
條件表達式的一般形式為
表達式1?表達式2:表達式3
先求解表達式1,若為非0則求解表達式2,此時表達式2的值就是整個條件表達式的值
若表達式1的值為假,則求解表達式3,表達式3的值就是整個條件表達式的值。
max=(a>b)?a:b
的執(zhí)行結果就是將條件表達式的值賦給Max,也就是將a和b二者中的大者賦給max
條件運算符優(yōu)先于賦值運算符,因此賦值表達式的求解過程是先求解表達式,再將它的值賦給max
上面的例子是利用了條件表達式的值,把它賦給一個變量max,其實也可以不把條件表達式的值賦予一個變量,而在條件表達式中的表達式2和表達式3中對Max賦值,并在條件表達式后面加一個分號,就成為了一個獨立的語句。
a>b?(max=a):(max=b);//表達式2和3都是賦值表達式
相當于
if(a>b) max=a;
else??? max=b;
條件表達式還可以寫成
a>b?printf("%d",a): printf("%d”,b)
即表達式2和表達式3不僅可以是數(shù)值表達式,還可以是賦值表達式或函數(shù)表達式。
# 題目
int a=2,則a=a++>-1?++a:--a后,a=
表達式1:a++>-1
條件運算符優(yōu)先于賦值運算符
表達式2:++a
表達式3:--a
最后賦值a
a++,++a都是將a變?yōu)閍=a+1
所以表達式1a++之后就是a=3,>-1,成立
執(zhí)行表達式2
此時就是a=++a
此時是,現(xiàn)將a先加1,之后再將a的值賦給a
所以此時a為4