❶ C++中三目運算符是什麼,怎麼用
三目運算符是?:結構的運算
所謂三目就是需要三個變數進行運算的操作。它等價於短if-else操作。
舉個簡單的例子:
c=a>b?a:b
這可分成幾個部分,用括弧分開:
(a=)(2>1)?(3):(4)
最左邊是賦值操作
第二個部分是一個判斷
第三和第四部分是兩個常數
首先判斷第三部分是否成立,成立即選擇第三部分,否則選擇第四部分
它相當於
if(a>b)
c=a;
else
c=b;
上面的例子用於獲得a和b的最大值。
這種運算還可以嵌套
比如判斷year是不是閏年,是則返回1,不是返回0
flag=(year%100==0)?(year%400==0?1:0):(year%4==0?1:0)
❷ c語言三目運算符問題
三目運算符為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);
❸ C語言三目運算符問題
A=[表達式]?a:b;
等價於
if(表達式)A=a;
else A=b;
同理,
printf(y?"\n":"no\n");
等價於
if(y)printf("\n");
else printf("no\n");
❹ C語言中三目運算符是什麼
選擇運算,就是A:B?C那個。
三目運算符為a?b:c即有三個參與運算的量。
如果結果為真計算?後:前就是a,那麼這個a%4?a:a/4結果就是a表達式變為b=a;既b的值為a。
如果結果為假計算:後就是a/4,那麼這個a%4?a:a/4結果就是a/4表達式變為b=a/4;既b的值a/4。
定義
對於條件表達式b ? x : y,先計算條件b,然後進行判斷。如果b的值為true,計算x的值,運算結果為x的值;否則,計算y的值,運算結果為y的值。一個條件表達式絕不會既計算x,又計算y。條件運算符是右結合的,也就是說,從右向左分組計算。例如,a ? b : c ? d : e將按a ? b : (c ? d : e)執行。
以上內容參考:網路-三目運算符
❺ 關於C語言三目運算嵌套的問題!!!
1000<p<=2000改為1000<p&&p<=2000
剩餘的同理修改
❻ c語言的三種循環不可以互相嵌套。
答:C語言的三種循環可以互相嵌套,題主的說法錯誤。
舉例:
for(i=0;i<10;i++)
{
do{
int j=10;
while(i<j)
{
i++;
}
}while(i<10);
}
printf("i=%d",i);
輸出結果為:i=11
如果有不明白的,可以繼續提問
❼ c語言:a>ba:b用法的問題 請教解決
a>b?a:(b>c?b:(a>c?a:c)),先看分析你的運算式構成及其邏輯關系:a>b時結果為a(不一定是最大值);a<=b時,結果為b>c?b:(a>c?a:c),若b>c則值為b(最大值),若b<=c則值為a>c?a:c(此時顯然a<=b<=c,即c肯定為最大值,a>c?a:c雖然沒問題但是累贅)。三目運算符有時候比if條件語句簡潔,對於簡單的判斷推薦使用三目運算。對於復雜的運算,使用三目運算反而會使其看著更復雜,不利於閱讀,所以不建議三目運算語句中嵌套過多運算。還有,對於printf,似乎有些人很喜歡把一些運算直接丟進去作為參數,本人不推薦這樣做。首先會使語句過長,其次可能會影響閱讀,甚至使邏輯混亂(函數參數入棧方式的不同,++/--的處理方式不同等可能會影響結果)。多寫幾行代碼費不了多少事,但是有時會減少很多麻煩,也利於別人閱讀你的代碼。
❽ 關於C語言:運算符的用法
a?b:c這個是條件表達式,也稱三目運算符,表示如果a為真,則表達式值為b,如果a為假,則表達式值為c。
條件表達式語法舉例說明如下:
if(a>b) {max=a} ; else {max=b};
可用條件表達式寫為
max=(a>b)?a:b;
執行該語句的語義是:如a>b為真,則把a賦予max,否則把b 賦予max。
(8)c語言中三目運算符可以嵌套使用嗎擴展閱讀
使用條件表達式的注意點:
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)
❾ C語言三目運算符怎麼用
C語言三目運算符用法:
對於條件表達式b ? x : y,先計算條件b,然後進行判斷。如果b的值為true,計算x的值,運算結果為x的值;否則,計算y的值,運算結果為y的值。
一個條件表達式絕不會既計算x,又計算y。條件運算符是右結合的,也就是說,從右向左分組計算。例如,a ? b : c ? d : e將按a ? b : (c ? d : e)執行。
<表達式1> ? <表達式2> : <表達式3>; "?"運算符的含義是:先求表達式1的值,如果為真,則執行表達式2,並返回表達式2的結果;如果表達式1的值為假,則執行表達式3,並返回表達式3的結果。
可以理解為條件 ? 結果1 : 結果2裡面的?號是格式要求。也可以理解為是不是條件成立,條件成立為結果1否則為結果2。
(9)c語言中三目運算符可以嵌套使用嗎擴展閱讀:
三目運算符,又稱條件運算符,指的是計算機語言(c,c++,java等)的重要組成部分。它是唯一有3個操作數的運算符,所以有時又稱為三元運算符。一般來說,三目運算符的結合性是右結合的。
以下是關於條件運算符的幾點說明:
(1)通常情況下,表達式1是關系表達式或邏輯表達式,用於描述條件表達式中的條件,表達式2和表達式3可以是常量,變數或表達式。例如:
(x==y)?'Y':'N'
(d=b*b-4*a*c)>=0?sqrt(d):sqrt(-d)
ch=(ch>='A'&&ch<='Z')?(ch+32):ch
以上均為合法的條件表達式。
(2)條件表達式的執行順序為:先求解表達式1,若值為非0,表示條件為真,則求解表達式2,此時表達式2的值就作為整個條件表達式的值;
若表達式1的值為0,表示條件為假,則求解表達式3,表達式3的值就是整個條件表達式的值。例如:
(a>=0)?a:-a 執行結果是a的絕對值。
(3)在程序中,通過把條件表達式的值直接賦予某個變數。例如:
min=(a<b)?a:b執行結果就是將條件表達式的值賦予變數min,即將a和b二者中較小的數賦給min。
(4)條件表達式的優先順序別僅高於賦值運算符,而低於前面遇到過的所有運算符。
因此,min=(a<b)?a:b括弧可以不要,可直接寫成,min=a<b?a:b如果有x<y?x+1:y-1等效於x<y(x+1):(y-1)而不等效於(x<y?x+1:y)-1
(5)條件運算符的結合方向為"自右至左".
(6)條件表達式允許嵌套,即允許條件表達式中的表達式2和表達式3又是一個條件表達式。例如:
x>0?1:x<0?-1:0
上述條件表達式中,表達式3部分又是一個條件表達式.根據條件表達式的結合性,上述條件表達式等價於:
x>0?1:(x<0?-1:0)
其作用是判斷x的符號情況.當x為正數時,該條件表達式的值為1;當x為負數時,該條件表達式的值為-1;當x為0時,該條件表達式的值為0。
(7)條件表達式不能取代一般的if語句,僅當if語句中內嵌的語句為賦值語句(且兩個分支都給同一變數賦值)時才能代替if語句。例如:
if(a%2==0)
printf("even/n");
else
printf("odd/n");
該語句的作用是:若 a 為偶數,輸出 even;若 a 為奇數,輸出odd。
(8)表達式1,表達式2,表達式3的類型可以不同.此時條件表達式的值的類型為它們中較高的類型。