『壹』 在c語言程序設計中,三目運算是怎麼實現的
一個條件運算符要求有3個操作對象,稱為三目運算符。
其一般形式為: 表達式1?表達式2:表達式
說明 (1)邏輯運算符的優先順序 和 算術運算符的優先順序 比 條件運算符的優先順序、賦值運算符的優先順序都高,這是此運算能夠運行的保證
(2)從左至右的運算方式,也是條件之一
(3)因為有(1)、(2)的系統強行規定和運演算法則的限定,保證了運算的次序
(4)綜合之前所說於是有:先求解表達式1 ,若為不是0(即為真),則求解表達式2 的值,此時表達式2的值為整個條件表達式的值。若為0(即非真),則求解表達式3的值,此時表達式3的值為整個條件表達式的值。C=(a>b)?a:b 也就是說先判斷a>b是否成立,若成立就把a的值賦給C,否則為b在賦給C。
(5)鑒於以上所述:c=(a>b)?a:b;可改寫為:(a>b)?(c=a):(c=b);
『貳』 單目、雙目、三目運算符 都是什麼(c語言)
所謂單目運算符就是只有需要一個操作數的運算符,如:--、++
同理,雙目運算符就是需要兩個操作數的運算符,如:+、-、*、/、=等。
c語言中三目運算符只有一個?:。(需要三個操作數)
『叄』 C語言:三目運算符用法問題。
不帶括弧,實際上是這樣的效果(","優先順序略低,一般都是最後執行咯)。
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++)
個人是非常不建議這么些,代碼給別人看挺麻煩。
『肆』 關於C語言三目運算符的一個問題
逗號表達式的優先順序在C語言中最低,甚至低於三目運算符。
這意味著你的表達式實際上是(*a!=',' ? i++, a++: a++), i++;
最後那個i++並不是三目運算符的一部分,它無論如何都會被執行。
你應該加上括弧:*a!=',' ? (i++,a++) : (a++,i++);
『伍』 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語言中的三目運算有哪些
表達式1?表達式2:表達式3
執行順序:
先求解表達式1的值,如果為真(非0)則求解表達式2,此時表達式2的值就作為整個條件表達式的值;
若表達式1的值為假(0)則求解表達式3的值,表達式3的值就是整個條件表達式的值。
例如:max=(a>b)?a:b
執行結果就是將表達式的值賦給max,也就是將a,b中大者賦給max。
因為條件運算符的優先順序比關系運算符和算術運算符都低,因此可以把括弧去掉,寫成max=a>b?a:b
條件運算符的 結合方向是「自右至左」
看如下表達式:
a>b?a:c>d?c:d
相當於
a>b?a:(c>d>c:d)
『柒』 我是小白。 c語言的三目運算符是幹嘛的 能否舉個簡單的例子。
三目運算符是具有三個操作數的運算符,例如:
m=a>b?c:d;
如果a>b成立則:m=c;
如果a>b不成立則:m=d;
程序例子:
#include<stdio.h>
voidmain()
{
intm,a=1,b=2,c=3,d=5;
m=a>b?c:d;
printf("m=%d ",m);//輸出結果一定是5
}
『捌』 C語言中那個三目運算浮是什麼意思
三目運算符
<表達式1>?<表達式2>:<表達式3>;
"?"運算符的含義是:
先求表達式1的值,
如果為真,
則執行表達式2,並返回表達式2的結果
;
如果表達式1的值為假,
則執行表達式3
,並返回表達式3的結果.
例:
int
a=2;
int
b=(a==2?2:5);
輸出b;
這樣的結果是b為2
eg:
int
a=1,b=2,z;
z=a>b?a:(a>b?a:b);
cout<<"z:"<<z<<endl;
這樣輸出的結果是:2
eg:
int
a=1,b=2,z;
z=a>b?a:a>b?a:b;//去了括弧
cout<<"z:"<<z<<endl;
這樣的輸出的結果是:2
三目運算中執行方向依次為自左向右。