C語言 條件運算子怎麼比較小數

2025-01-18 21:10:16 字數 6235 閱讀 1518

1樓:網友

main()

double a,b;

printf("輸入a和b兩個含小數的數字,空格分開:")scanf("%lf %lf",&a,&b);

if (a > b) printf("%lf > lf",a,b);

else if ( a < b) printf("%lf < lf",a,b);

else printf("%lf ==lf",a,b);

return 0;

上面是程式,比較兩個小數的大小,下面是結果:

嘿嘿,忘記是條件運算了,程式改了一下,發上來:

#include

main()

double a,b,max;

printf("輸入a和b兩個含小數的數字,空格分開:")scanf("%lf %lf",&a,&b);

max=(a>b)?a:b; /條件運算。

printf("大數是:%lf",max);

2樓:寒風_弄夜

舉個例子,如下:

#include

void main()

int a=3,b=5,min;

min=aprintf("%d",min);

補充:表示式1?表示式2:表示式3 就是如果表示式1為真則取表示式2為這個條件運算子的值,反之取表示式3

3樓:網友

直接用就是了,《這樣不就ok了?好像double型別的話比較有時候會出現乙個小數點進位問題,這個應該也沒影響的!

4樓:網友

比較小數時注意:一般比較大於小於,而不去做比較等於的條件運算,因為浮點數計數有時候會出現很小的誤差比如,有時候計數結果是這樣做精確等於運算就不合適了。

如果非要進行上述等於運算時,可先將兩個數進行某精度上的四捨五入並利用整型截斷小數點後面指定位數後再進行比較。

5樓:快來見本大人

比大小時直接用 > 比 值是否相等要同時用< >在定點位數期間。

6樓:網友

我也想知道,碰到同樣的問題了。

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

7樓:

這裡涉及了c中的優先順序、結合性、求值順序。

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

對於?:,在c中與它優先順序相同的只有它自己,因此只有連續的?:才會體現出它的右結合性,即a?

b:c?d:

e中,根據右結合性可知應理解為a?b:(c?

d:e)。顯然,上述問題中是體現不出這種結合性來的。

再者,還有乙個求值順序的問題,a?b:c中,c語言規定先對a求值,非零則對b求值並作為該表示式的值,為零則對c求值並作為表示式的值,並且b和c中有且僅有乙個會被求值。

對於題目中的就應該是:先進行(--a == b++)的求值,根據是否為零,會對(a++)或(b++)進行求值。說白了,也就是隻有兩種可能性:

可能性1:先算(--a == b++)再算(a++)可能性2:先算(--a == b++)再算(b++)

至於(--a == b++)中到底是先算--a 還是b++則僅從c語言這個角度是無法判別的,這是個實現問題,如果要想寫出健壯的可移植的**就應該避免這種表述。

總結一下,就是先看優先順序,次看結合性,有的求值有序,有的則無序。

8樓:網友

右結合性是運算子的一種性質。對於某一箇中綴運算子op,如果 a op b op c 等價於 a op ( b op c) 就可以說運算子具有右結合性。

對於c語言的條件運算子 a?b:c 而言,判斷優先順序和結合性的時候,中間的表示式 b 不納入判斷。

c語言的條件運算子具有這樣的性質: a ? b :

c ? d : e 等價於 a ?

b : c ? d :

e),因此一些人說c語言的條件運算子具有右結合性。

c語言條件運算子問題

9樓:匿名使用者

結果是:a=10 b=9 c=11

自減運算要等到表示式求值後在執行。

a=(x--==y++)x--:y++;

b=x++;

c=y;這三句寫成if else 語句:

if (x==y)

elseb=x;

x++;c=y;

10樓:網友

後置的自增或者自減運算子是先帶原來的數字進去求值然後在做自增。

也就是int a = 1;

int b = a++;

這麼運算過之後,b=1, a=2,注意對b賦值的值是在a自加之前。

反過來++a就是先自加在代進表示式求值:

int a = 1;

int b = ++a;

那麼這時候a和b都等於2。

11樓:網友

仔細看看第4行。

把其中乙個的x和y換個位置。

c語言中條件運算子是什麼意思

12樓:a羅網天下

條件運算子(? 是乙個三目運算子,即有三個運算元。

使用條件運算子(?:可以實現 if else 的功能,其一般形式為:

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

例如條件語句:

if(a>b) max=a;

else max=b;

可用條件表示式寫為。

max=(a>b) ?a : b;

執行該語句的語義是:如a>b為真,則把a賦予max,否則把b 賦予max。

if條件語句例子如下:

直接編譯,程式輸出結果中任意輸入年齡,程式執行結果如下圖所示:

知識擴充套件:條件運算子的運算優先順序低於關係運算子和算術運算子,但高於賦值符條件運算子?和:是一對運算子,不能分開單獨使用。

條件運算子的結合方向是自右至左。

13樓:冰凍了你呢

條件運算子。

:)是c語言中唯一具的三目運算子,就是說它有三個運算物件。條件運算子的形式是"? :"由它構成的表示式稱為條件表示式。

條件表示式的形式為:

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

例如:(a>b)?a+b:a-b

其中,如果a=2,b=1,那麼a>b成立,執行a+b這個表示式,運算結果為3;但如果a=2,b=3,那麼a>b不成立,那麼執行a-b這個表示式,運算結果為-1.

拓展資料】條件表示式1 ? 條件表示式2 : 條件表示式3)條件運算子的功能類似if語句,例如:if (條件表示式1)

條件表達是2;

else條件表示式3;

你的思路是不對的,應該是判斷"條件表達是1"真假,若真執行"條件表達是2",若假執行"條件表達是3",在執行了"條件表達是2"或者"條件表達是3"之後就。

就執行條件語句後的內容了。

14樓:天水資訊釋出

代表意思如下:

關係運算和邏輯運算的結果都是邏輯值,即"真"和"假"。

由於c語言中沒有邏輯型資料,因此c語言規定用整型資料來表示邏輯值。

用整數值1表示邏輯"真",用整數值0表示邏輯"假"。在c語言中,將非0就視為"真"。

關係運算實際上是邏輯比較運算,它是邏輯運算中的一種。關係運算子的作用是確定兩個資料之間是否存在某種關係。

條件運算子優先順序高於賦值、逗號運算子,低於其他運算子。

15樓:莫道不知卿

表示式1成立:值為表示式2,不成立則為表示式3。

如:max=a>b?a+3:b+4;

如果a>b,那麼輸出結果為a+3。不成立輸出結果為b+4。

16樓:網友

?:的意思是"?"前的表示式運算結果如果為true,則取":"前的表示式值,否則取":"後的表示式值。

比如c=a>b?a:b;

是求a,b的最大值。

17樓:網友

有點類似if else 的意思 具體看這個:

關於c語言條件運算子的結合順序?!!!

18樓:網友

樓主注意,結合順序不等於求值順序。條件表示式的求值順序是這樣規定的:

test ? exp1 : exp2;

條件測試部分test非零版,表示式權exp1被求值,否則表示式exp2被求值,並且保證exp1和exp2兩者之中只有乙個被求值。該運算子是右結合的值是要告訴你:後面不管跟了多大多長的表示式只要它是合法的那就整個被看作exp2。

所以a>b?a:c>d?c:d 當然相當於a > b ? a : c>d?c:d)

別說你後面只是乙個(c>d?c:d),就算你後面是優先順序比條件運算子還高的操作符組成的表示式,它也得按照條件運算子的求值規則求值。

比如說a > b ? x = 200) :x+y);

加號的優先順序比條件運算子高好幾個等級,答案還不是照樣是200。這樣,我看int a = x>y?(x = 200):(y = 350); 就不要我再作解釋了吧!

19樓:網友

200結合順序是怎樣和哪個先執行是兩回事。

這裡很明顯是先比較x>y,然後選擇了執行a=x=200。

y=350沒有做,所以y最後還是50

環境:vc++,

20樓:網友

max = num1>num2?num1:num2是乙個三元運算子,?前的為真,則執行:前的。

前的為假,則執行:後的。

因此,答案為200.

21樓:網友

200x>y是真那麼執行x=200,最後賦值給a的也就是200

這還用除錯?跟你說的結合有關係麼?

c語言運算子的區別

22樓:網友

一直以來,++語法浪費了太多人的時間。說句實在話,++在c語言中其實是乙個很細節的語法,除了表達簡練外,真的沒有什麼其它的好處了。

由於中國的c語言教程長期以來被譚浩強主宰,而譚又錯誤的把++ 作為乙個c語言重點來教,並增加了一些難點,把本來很簡單的語法,搞得複雜無比!

簡單的來說,++i 和 i++,在單獨使用時,就是 i=i+1。

而 a = ++i,相當於 i=i+1; a = i;

而 a = i++,相當於 a = i; i=i+1;

如果實在搞不明白++ 怎麼回事,那也不是什麼天塌下來的事。

因為a=++i完全可以寫成 i++;a=i。

a=i++完全可以寫成 a=i; i++。

而且,這也是一種好的程式風格:++語句如非特殊需要,請單獨一行使用。

23樓:網友

寫在前面的是先進行自加(減),然後再返回值;寫在後面的是先返回值,然後再進行自加(減)

如果m=5;

m++:返回5,m的值為6

m--:返回5,m的值為4

m:返回6,m的值為6

m:返回4,m的值為4

24樓:屠新曾芷文

%是求餘。

是取整。比如34inta

a%104;//餘4

a/103;//商為3,餘4

c語言中,條件運算子是怎樣的法則?

25樓:網友

由高到低是:!(非),&與),|或)&&左邊為0則不看右邊運算,||左邊為1不看右邊!

例:main()

執行結果:a=1

b=0c=3

d=1程式執行說明:先執行!b>a即0>a,結果為0(b=0)再執行0&&c結果為0,執行c>2結果為10||1結果為1

因為執行順序為右結合,所以將整個表示式的結果給 d為1}條件運算子:

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

運算規劃:如果表示式1為真,返回表示式2的結果,否則返回表示式3的結果。

例如:a=1,b=2

a>b)?a:b

返回值為2注意表示式是右結合的。

例:a=1,b=2,c=3

a>b)?a:b?c:b

相當於(a>b)?a:(b?c:b)

返回值為3

c語言移位運算子怎麼用,C語言移位運算子怎麼用?

這是c 好吧。算了c和c 的移位運算子都一樣 這個難道不對嗎,左移就是 2啊 不越界的話 原理就是你把1110化成二進位制 000010001010110 然後每個位都向左移一位,最低位補0,次高位捨棄 最高位是符號位,不能動 x 1 相當於乘以2 假如 x 8,對二進位制來說就是00001000,...

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

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

c語言條件表示式問題,C語言中條件運算子是什麼意思

a 當exp值為1時,exp為0,exp 0的值為1.當exp值為0時,exp為1,exp 0的值為0。b 當exp值為1時,exp!0的值為1.當exp值為0時,exp!0的值為0。c 當exp值為1時,exp 1的值為1.當exp值為0時,exp 1的值為0。d 當exp值為1時,exp!1的值...