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

2021-04-28 17:35:16 字數 6184 閱讀 9634

1樓:匿名使用者

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

所謂三目就是需要三個變數進行運算的操作。版它等權價於短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)

2樓:匿名使用者

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

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

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

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

3樓:匿名使用者

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

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

c語言三目運算子怎麼用

4樓:天雲一號

c語言中只有一個三目運算子,就是條件運算子(? :)條件運算子的一般使用格式如下:

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

舉例如下:

max = (a>b) ? a : b; // 取變數a, b中較大的一個,並賦值給變數max

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樓:匿名使用者

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

所謂三目就是需要三個變數對能進行運算的操作舉個簡單的例子:

a=2>1?3:4

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

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

最左邊是賦值操作

第二個部分是一個判斷

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

首先判斷第三部分是否成立,成立即選擇第三部分,否則選擇第四部分像上面那個2>1成立,所以就執行了a=3

這種運算還可以巢狀

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

7樓:

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

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++)

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

8樓:匿名使用者

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

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

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

9樓:匿名使用者

運算子是有運算順序的。

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

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

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

10樓:匿名使用者

條件操作符是一個三目操作符

條件表示式?表示式1:表示式2

先計算條件表示式,若為真,對表示式1求值,求值的結果為整個條件操作符表示式的值;

若為假,對表示式2求值,求值的結果為整個條件操作符表示式的值。

如:s = ( x < 0 ) ? -1 : x * x;

表示當x<0時返回-1;當x>=0是返回x平方。

11樓:匿名使用者

a>b:a?b

如果a大於b返回a 如果相反則返回b

c++ 三目運算子是什麼

12樓:砍侃看

#include

int main()

a>b?a:b;

其實dao就相當回於

答if(a>b)

return a;

else

return b;

13樓:fly愛與希望

就是唯一的那個吧

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

c++ 三目運算子問題

14樓:匿名使用者

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

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

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

15樓:匿名使用者

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

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

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

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

16樓:匿名使用者

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

17樓:匿名使用者

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

18樓:匿名使用者

這是三目運算的形式

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

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

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

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

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

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

19樓:匿名使用者

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

20樓:匿名使用者

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

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

21樓:匿名使用者

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

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

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

比如以下表示式:

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

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

22樓:匿名使用者

a>b? a:b

等價於if(a>b)

print("%d",a);

else

print("%d",b);

23樓:匿名使用者

相當於一個條件判斷。

24樓:匿名使用者

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

c++三目運算子的問題

25樓:匿名使用者

函式的定義

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

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

26樓:匿名使用者

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

du是否zhi為空

dao內*/

改為:容

int empty()

三目運算子在c語音和c++語言中的區別

27樓:匿名使用者

沒有區別

三目運算子 ?:

在c和c++中是完全相同的用法

都是 expr1?expr2:expr3的形式表示 expr1如果為真, 則執行expr2 否則 執行expr3

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

可以這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 ...

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

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

c語言運算子,C語言 運算子 是怎麼運算的

9除以5商1餘4 不是說小數最後位是餘數 餘數就是在整數的除法中,只有能整除與不能整除兩種情況。當不能整除時,就產生餘數,所以餘數問題在小學數學中非常重要。餘數有如下一些重要性質 a,b,c均為自然數 1 餘數小於除數。2 被除數 除數 商 餘數 除數 被除數 餘數 商 商 被除數 餘數 除數。3 ...