為什麼c語言中 ab是 ab不是 ab

時間 2021-08-11 15:51:41

1樓:空翎人

因為自加自減的優先順序比算術運算子高,所以先算a--,因為a在b前面,所以先算a,

2樓:小成要吃糖

c語言運算子有優先順序的。

3樓:

你好!1、等號是賦值運算,這就意味著等號左邊必須是被賦值的變數,顯然a+7是表示式,而不是變數。

2、整形運算是隻取整數部分的,你定義的c1,c2,c3均是整數,所以;c3=1.0/c2*c1;進行的是整形運算,那麼只取整數部分就是0.

3、注意:在浮點型與整形等混合運算時,系統會將所有型別的資料轉化成double型的來運算,然後把結果再根據需要賦給響應變數。

對於你的表示式,c是float的,所以最後結果是要被轉化成float賦值給c。

4、逗號運算子,又稱順序求值運算子,但是要區分這個順序,這裡的順序指的是表示式,逗號運算子使用形式是:表示式1,表示式2,......

這就是說逗號隔開的是表示式,那麼對於i=(a=2*3,a*5),a+6;就可以理解了:i=(a=2*3,a*5)是一個表示式,a+6是另外一個表示式。

4樓:未簽收

ansi標準規定了一個被稱為最大咀嚼策略的慣例。最大咀嚼策略也就是說,如果下一個標記有不止一種可能,編譯器會選擇包含最長字元序列的那個。

每個編譯器都有一個標記器,它是一個元件,可以將原始檔解析為不同的標記(關鍵字、操作符、識別符號等)。標記器的規則之一叫做“maximum munch”,意思是標記器應該一直從原始檔讀取字元,直到增加一個字元導致當前記號不再有意義為止。

參考下這本書:expert c programming: deep c secrets

在c語言中a-=b+c應該是a=a-(b+c)還是a=a-b+c?

5樓:男人的—煙

a=a-(b+c)

原因:運算子“+”的優先順序大於“-=”,編譯器會先進行加法運算。

6樓:匿名使用者

不同編譯器可能答案不同,在你的編譯器上試驗一下就知道了。

7樓:love青春似歌

在來c語言中a-=b+c應該是a=a-(b+c)-=的意思:

1、 -=是c語言自中bai的一du個複合運算子。zhi2、 -=為雙目運算,dao 形式為:a-=b表示含義為:a=a-bc語言中複合賦值運算子 :

1、<<= 的意思是左移等。a<<=b其實就是a=a<2、 >>= 的意思是右移等。a>>=b其實就是a=a>>b.

3、&=  的意思是與等。a&=b其實就是a=a&b.

8樓:匿名使用者

第一種 a- =c 即 a=a-c; 而c編譯bai系統會先運算dub+a,所以因該是第zhi一dao種;內#include"stdio.h"void main()如果執行結果是1.0~則是第一種是2.

0~則是第二種容。

c語言中為什麼不能用 if(a==b)判斷兩個浮點數是否相等?我知道 if (fabs(a-b)<1e-6)可以判斷。求高人解答!

9樓:匿名使用者

你查一bai下符點數儲存

du標準ieee754就知道了!zhi

符點數是採用二進位制科dao學計數法版

來進行儲存的,因此,權絕大多數的數在計算機中是不能 精確 表示的。

如果兩個數a b都是常數賦值,這樣比較,應該不會有問題,如:double a=5.3,b=5.3;

if ( a == b )

這時會輸出a=b

如果a或b是經過運算後得到的值,這時就不一定是一個精確的你想要的值了,如:

double b=2.6+2.7,a=5.3;

if ( a == b )

這時就不一定能輸出a=b了!

10樓:匿名使用者

可以判斷的來 ,只不過浮點

源數精度過高,難以達到一致。bai

舉個例子du

#include

int main()

這個程式並不輸出0,而是7.45058e-009,所以zhi在進行算術

dao邏輯運算的時候,會喪失精度

****************************************=

你自己把我給你的程式拿去測試下就知道了

****************************************=

記得給分哦

****************************************=

11樓:我的

因為a ,b實數,而實數在計算機和儲存時會有一些微小的誤差,因此不能直接進行“if(a= =b)

判斷。必須用if (fabs(a-b)<1e-6進行判斷

12樓:匿名使用者

因為浮點數都是有精度的,比如1.0000000000和1.000000是不一樣的

c語言中(a!=b)?a-b:a+b的含義是什麼?

13樓:匿名使用者

如果a不等於b那麼輸出a-b,否則,輸出a+b

在c語言的環境下,a=5;b=a++;c=--a-b++;d=(a++)-(++b)+c--;結果是多少,怎麼算?

14樓:匿名使用者

首先進行第一步“a=5”:將5賦給a,這樣實現了a=5

然後進行第二步“b=a++”,由於++為字尾,所以先將a值賦給b,結果b=5,然後進行a++運算,a=6

然後進行第三步“c=--a-b++”,首先--為字首,所以先運算--a,結果a=5,由於++為字尾,所以接下來先運算c=a-b,結果c=5-5.為0,最後進行b++運算,結果b=6

最後一步“d=(a++)-(++b)+c--”,先運算括號裡面的“a++”和“++b”,結果a=6,b=7,由於--為字尾,所以先運算d=a-b+c,也就是d=6-7+1=0,最後運算c--。結果c=-1

以上是運算結果,考的主要是運算的優先順序,是這樣的,看見括號裡面的,先運算括號裡面的,沒有括號的,你要看++或是--,是字首,還是字尾,如果是字首的話,先運算++或是--運算,如果是字尾的話,你就先運算整個式子,運算完了整個式子,再運算++或是--運算,至於具體的例子,我給你的計算過程,你可以自己結合著體會一下,有什麼不明白的,就追問我。

15樓:匿名使用者

a=5;

b=a++,這部之後b=5,a=6

c=--a-b++這步之後c=0,a=5,b=6d=(a++)-(++b)+c--這步之後d=0,a=6,b=7,c=-1

16樓:猶望亭菅羅

1.switch結構分支沒加break;跳出語句,開始執行後,程式由x=1調到case1分支

a++(a由0自己加為1),由於沒有break語句,程式繼續執行到case2分支

a++b++(a由1自加變2,b由0自加為1),之後程式printf輸出

a=2,b=1

2.新增break後,結果是a=1,b=0#include

"stdio.h"

main()

printf("a=%d,b=%d\n",a,b);}

c語言中,a=-1,b=1;if((++a<0)&&!(b--<=0))

17樓:青水之畔

++a,先將a加1,再判斷,

a=0,(++a<0)為假,值為0

b--,先進行判斷,再減一,b=1,所以(b--<=0)值為假,因邏輯是與,(++a<0)為假,整個表示式必為假,此時便不再算後面的表示式,因此,b的值並沒有減1.

結果(++a<0)&&!(b--<=0)值為0,a為0,b為1

18樓:匿名使用者

(++a<0)&&!(b--<=0)

運算級() > ++ > -- > < > <= > ! >&&

執行順序

++a<0其中先++a=0 ++a<0 不成立 值為0&&兩邊都成立值為1

只要有0就不成立

所以後面的就短路了

後面根本就沒有執行

單純執行到++a<0就結束了

if的執行體不執行.....

19樓:浪人

++a是先算a=a+1再把a的值作為(++a)的值,如當a=-1時則(++a)=0;a=0.

b--則是

先將b的值作為b--的值,在執行b=b-1,如當b=1時則(b--)=1,b=0;

&&是數學中並的關係,!則是對()裡的否定,如果()裡的表示式成立則,!()不立,!的運算級高所以先執行!(),在執行&&。

20樓:匿名使用者

1 if 裡面有兩個判斷語句, 如果第一個為false,不管第二個為false或者為ture,結果都為false,所以如果第一個為false,就沒有必要執行第二個了,程式就是這麼做的。

2 在你的判斷中++a結果0.很顯然0<0 是false,所以此時你整個判斷語句就為false。下面即使再有n個條件也不會去判斷了。

21樓:匿名使用者

++a<0  先判斷a是否大於0   然後再加1    b--<=0    先b—1  然後再判斷<=0

c語言 已知a b,且a,b為正整數,求滿足條件a b

include define the value 716699.0int main void double a unsigned int b double result double temp temp 0xffffffff for a 1.0 a the value 2 a 1.0 b unsig...

為什麼 a b 等於a b,為什麼 a b 等於a b 2ab

小小芝麻大大夢 a b a b a b a ab ab b a b 2ab 擴充套件資料 1 a b a 3a b 3ab b 2 a b a a b a b b a a b b a b a a b b a b a b a b a b a b a b a ab b 3 a b a a b a b b...

浙大ZOJ 1001 C語言a b問題

這一句可以讓你實現多組a b的輸入 eof是end of file的縮寫 按你的寫法輸入一組a b之後程式就會終止 oj無法實現多組輸入 當然判錯啦。看了一下你的 應該沒有問題。zoj給出評測結果是什麼?wa?這句話是判斷輸入是否結束,eof表示結束符。zoj 1001 我快暈了,我的為什麼不能通過...