關於c 三目運算子的問題,C 三目運算子問題

2021-03-12 09:34:48 字數 4718 閱讀 4483

1樓:

可以這bai麼分割:

d = ( a+b? ( c=d-a?a:c) : b)意思是這樣第du

一個三木運算子如zhi果a+b非零結果則 d = ( c=d-a?a:c ) ,為零則dao為版d = b;

第二個,先權令c = d - a ,然後同理 c 非零結果為 a ,為零則結果為c ,你可以自己測幾組資料試試,不明白可以追問。

比如:int a = -1 , b = 2 , c = 3 , d= -1;

d=a+b?c=d-a?a:c:b;

此時結果為3,原理如上。

2樓:匿名使用者

表示式中 存在 賦值(=)  算術加(+)  算術加(-) 和 條件運算子(?:) 四種運算子

其中 賦值 的 優先順序最低,專條件運算子略高,算術運屬算符最高所以有d =

a + b

?c = ( d - a ? a : c ):b;運算過程等價於

if (a + b)

d = c;

} else

3樓:手機使用者

計算結果8,三目運算

符是這樣的:a?b:

c,若a表示式為真,則三目運算子結果為版b表示式的結果, 若權a為假,則為c的結果,那麼9>1.88為真,那麼三目運算式結果為a,也就是sizeof(a),還有型別轉換,比較時把整形的變成double型的,結果為double的sizeof為8

4樓:匿名使用者

賦值運算子的優先順序低於三目運算子,因此語句定價於:

d = ( (a+ b) ? ( c=((d-a)?a:c)) :b);

c++ 三目運算子問題

5樓:匿名使用者

三目運算就是下面這算式了

a>="a"&&a<="z")?(a+32):a它的意思是:a代表的字元在小寫字母'a'和'z'之間嗎?如果是,運算結果是a+32;如果不是,結果是a

這段程式應該是字母大小寫轉換,但有點問題。如果是想把小寫轉成大寫,後面應該是(a-32);如果是想把大寫轉成小寫,引號裡應該是大寫字母a和z

6樓:匿名使用者

語法錯誤a>="a"&&a<="z":應該是a>='a'&&a<='z'吧,如果雙引號應該就表示是字串了,所以應該是單引號。

如果想轉換大小寫a+32,應該改為a-32,好像是a=96,a=64。

三目運算子的意思就是:如果變數a 在字元'a'與'z'之間,就返回a+32的值,如果不是,則返回a的值。

然後再將返回的值賦給變數a。

7樓:匿名使用者

a=(a>='a'&&a<='z')?(a-32):a功能將a中的字母小寫轉換為大寫

a=(a>='a'&&a<='z')?(a+32):a功能將a中的字母大寫轉換為小寫

條件運算子和條件表示式

如果在條件語句中,只執行單個的賦值語句時, 常可使用條件表示式來實現。不但使程式簡潔,也提高了執行效率。

條件運算子為?和:,它是一個三目運算子,即有三個參與運算的量。

由條件運算子組成條件表示式的一般形式為:

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

8樓:匿名使用者

a=(a>="a"&&a<="z")為真,就把a+32賦給a;為假,把a賦給a,即不變,然後輸出a。。

9樓:匿名使用者

這是三目運算的形式

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

先判斷表示式1 是否為真 如果為真 則執行表示式2 否則執行表示式3

所以暱所給題目中 應先判斷?號前的表達真假 真則:a+32 假則:a

?號前 為一個邏輯表示式 加一個賦值語句 先看邏輯表示式真假 將其值賦給a

因為前面為真 所以執行 a+32

注意 此時 a的值已與原來不同

10樓:匿名使用者

那是a+32麼。。好像應該是減吧。。。

11樓:匿名使用者

如果你想把小寫轉成大寫,要寫成(a-32)

c語言三目運算子問題。

12樓:陌上

如果y值為0則輸出的是後面的「no」然後回車,如果不為0則直接輸出回車。判斷語句中0為假。不為0為真。

c++中三目運算子是什麼,怎麼用

13樓:匿名使用者

三目運算子是?:結構的運算

所謂三目就是需要三個變數進行運算的操作。版它等權價於短if-else操作。

舉個簡單的例子:

c=a>b?a:b

這可分成幾個部分,用括號分開:

(a=)(2>1)?(3):(4)

最左邊是賦值操作

第二個部分是一個判斷

第三和第四部分是兩個常數

首先判斷第三部分是否成立,成立即選擇第三部分,否則選擇第四部分它相當於

if(a>b)

c=a;

else

c=b;

上面的例子用於獲得a和b的最大值。

這種運算還可以巢狀

比如判斷year是不是閏年,是則返回1,不是返回0flag=(year%100==0)?(year%400==0?1:0):(year%4==0?1:0)

14樓:匿名使用者

三目運算就是下面這算式了

a>="a"&&a<="z")?(a+32):a它的意思是:a代表的字元在小寫字母'a'和'z'之間嗎?如果回是答,運算結果是

a+32;如果不是,結果是a

這段程式應該是字母大小寫轉換,但有點問題。如果是想把小寫轉成大寫,後面應該是(a-32);如果是想把大寫轉成小寫,引號裡應該是大寫字母a和z

15樓:匿名使用者

x = p? q: r; 相當於是 if(p) x=q; else x=r;

cout << p? q: r; 相當於是 if(p) cout << q; else cout << r;

c++ 三目運算子是什麼

16樓:砍侃看

#include

int main()

a>b?a:b;

其實dao就相當回於

答if(a>b)

return a;

else

return b;

17樓:fly愛與希望

就是唯一的那個吧

條件?滿足時 。。。。。。。:不滿足時。。。。。。。。。

c++三目運算子的問題

18樓:匿名使用者

函式的定義

《修飾符》 《返回值型別》 《函式名稱》(引數列表)

c2059 並不是關鍵字,不能作為修飾符。

19樓:匿名使用者

c2059-int empty()/*判斷鏈bai佇列

du是否zhi為空

dao內*/

改為:容

int empty()

c++三目運算子?:是幹嘛用的?

20樓:匿名使用者

三目運算子《表示式1>?《表示式2>:《表示式3>; ,屬於關係運算子,

常用於關係比較,主要用於比較關係的狀態只有兩種的情況(大於 和 不大於,真 和 假)

先求表示式1的值, 如果為真, 則執行表示式2,並返回表示式2的結果 ; 如果表示式1的值為假, 則執行表示式3 ,並返回表示式3的結果

比如以下表示式:

a>0? a++:(a = 1)

當a>0為真 時,執行a++,整個表示式的值等於表示式a++的值,當a>0為假 時,執行a=1,整個表示式的值等於表示式a=1的值。

21樓:匿名使用者

a>b? a:b

等價於if(a>b)

print("%d",a);

else

print("%d",b);

22樓:匿名使用者

相當於一個條件判斷。

23樓:匿名使用者

比如說max=a>b?a:b ; 如果a>b,max就等於a,反之等於b

C語言中怎樣理解三目運算子(條件運算子)的右結合性

這裡涉及了c中的優先順序 結合性 求值順序。結合性只有在相同優先順序的運算子間才起作用,比如a b c,與 優先順序不同,這裡根本不用去管結合性。而a b c則需要進行結合性考慮了,如果 為左結合性,那麼應該理解為 a b c,如果 為右結合性,那麼應該理解為a b c 當然了,我們已經知道 為左結...

C 中三目運算子是什麼,怎麼用

三目運算子是?結構的運算 所謂三目就是需要三個變數進行運算的操作。版它等權價於短if else操作。舉個簡單的例子 c a b?a b 這可分成幾個部分,用括號分開 a 2 1 3 4 最左邊是賦值操作 第二個部分是一個判斷 第三和第四部分是兩個常數 首先判斷第三部分是否成立,成立即選擇第三部分,否...

C語言單目運算子的結合性問題,C語言中,逗號運算子和條件運算子還有單目運算子有沒有結合性

c a b 等價於 a b你說的 a b 為什麼不是 a b 是因為編譯器解釋一行 的先後順序,編譯器在解析 時是按從左到右的順序來的。在碰到 字母 a 後,向右解析,發現了 a 這兩個字母,a 中的 可以是 號運算子,也可以是 自增運算子,編譯器不能確定,只能再向右解析,又碰到一個 就變成了 a ...