c語言問題條件運算子選擇題,C語言問題 條件運算子選擇題

2021-06-17 17:15:00 字數 2968 閱讀 6320

1樓:蓉雪球

?:這個是三目運算子。

這個是條件表示式,表示如果a為真,則表示式值為b,如果a為假,則表示式值為c

條件表示式具體說明如下

條件語句:

if(a>b) max=a;

else max=b;

可用條件表示式寫為

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又是一個條件表示式。

k

-4<3正確就是k=4

這個沒有答案

k=-4

2樓:偉少love靜靜

條件運算子是惟一有3個運算元的運算子,所以有時又稱為三元運算子。對於條件表示式b?x:y,先計算條件b,然後進行判斷。如果b的值為true,計算

x的值,運算結果為x的值;否則,計算y的值,運算結果為y的值。一個條件表示式從不會既計算x,又計算y。條件運算子是向右結合的,也就是說,從右向左

分組計算。例如,a?b:c?d:e將按a?b:(c?d:e)執行。

你這個沒有答案啊,應該是k=4吧,結果為a

3樓:匿名使用者

你可以換成如下方式理解:

if (k

結果為k

else if(c

結果為c

else

結果為a。

這樣就很明白了吧。

c語言?:三目運算子用法問題。

4樓:

不帶括號,實際上是這樣的效果(","優先順序略低,一般都是最後執行咯)。

temp<=n ? (temp *= 2,m++):(temp = (temp-n)*2-1),m++;

也就是說,不帶括號,你temp<=n成立時候,m++總是會執行兩次,當然對於temp>n是沒問題的。

帶括號,自己比較好理解。

然後,你如果想寫的高大上,簡單點又正確,可以只加後面一個括號。即下面的方式。

temp<=n ? temp *=2,m++:(temp=(temp-n)*2-1,m++)

個人是非常不建議這麼些,**給別人看挺麻煩。

5樓:匿名使用者

三目運算子為a?b:c即有三個參與運算的量。由條件運算子組成條件表示式的一般形式為:

表示式1? 表示式2: 表示式3

其求值規則為:如果表示式1的值為真,則以表示式2 的值作為條件表示式的值,否則以表示式2的值作為整個條件表示式的值。 條件表示式通常用於賦值語句之中。

例如條件語句:

if(a>b) max=a;

else max=b;

可用條件表示式寫為 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又是一個條

件表示式。

void main(){

int a,b,max;

printf("\n input two numbers: ");

scanf("%d%d",&a,&b);

printf("max=%d",a>b?a:b);

6樓:匿名使用者

三目運算: 條件?值1:值2,是根據條件的值分別值1或值2

對於本題就是依據你的取值,分別取(temp *= 2, m++) 和(temp = (temp - n)*2-1, m++)

若把?:中:前後的兩個()去掉,會出現錯誤!

7樓:匿名使用者

運算子是有運算順序的。

比如你上面括號裡面的*運算子優先順序高於=,++也高於三目運算子。推薦你看一下運算子優先順序。

就這個程式而言,主要問題是,逗號運算子優先順序比三目運算優先順序還低,去掉括號後,造成先做了三目運算,後做逗號運算。

希望這個回答對你有幫助。

8樓:8棒棒鼠

運算是分級別的,人看不懂,電腦也就會看錯

9樓:煙禎鄂雨

表示式1?表示式2

:表示式3

這個三目運算子的作用是:如果表示式1成立,則取表示式2的值,否則取表示式3的值

上面的式子等價於:

a=3,b=4;

(a>b)?(

(b>=2)?1:2):(

(a>b)?2:1

);由於a>b不成立,所以執行

(a>b)?2:1;

由於a>b不成立,所以取1

c語言~利用條件運算子的巢狀來完成此題:

10樓:木蘭

去掉兩個&號

c語言賦值運算子,C語言賦值運算子

a a a a 分步 1 a a a a a 9 a 9 a a 9,a 6 2 a 6 a 6 6 a 12a a a a 1 a a a 9 2 a 9 a 9 9 a 0 3 a 0 a 0 在c語言中11種賦值運算子的具體含義,用法?1.六個變數 表示式的賦值 是賦值運算子,是除後賦值,是乘...

C 複合賦值運算子問題,c語言,複合賦值運算子

執行順序 1 a 1 2 2.a被替換為31 31 1 23.計算後得到 31 2 15 小數被忽略 4.a a 1 31 1 32最後a 32,表示式a 1 2 15 a x等價與a a x 所以a a a a就等價於a a a a a a x等價與a a x 所以,又有a a a a a 等價於...

c語言運算子與表示式基礎題,C語言運算子與表示式問題

printf d y 是y現自減自在輸bai 出yy 9 條件成立,y自減 輸出8 再執du行for裡的zhiy y變為7再次dao判斷 if條件不成立 再執行for裡的y y變為6 再次判斷 if條件成立 y子減 輸出5再執行for裡的y y變為4 再次判斷 if條件不成立 再執行for裡的y y...