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 ...