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語言中ab和ab有什麼區別
我記得c語言沒有 a b 我只知道a 和a 的區別 a 就是先加1在做加減乘除,而a 就是先加減乘除再 1 應該是這樣,我也是剛接觸不久,不是很懂 前面是一個複合運算子,a b的值賦予a 後面是兩個運算子了,根據運算子優先性,a的a正運算還是a,再把的b值賦予a 前面這個表示a a b 後面那個應該...
請問C語言中a b 和!ab等價嗎
答案是 等價 證明如下 1.a 0,b 0時,a b 0,a b 1,a b 1 2.a 0,b 1時,a b 1,a b 0,a b 0 3.a 1,b 0時,和2相同4.a 1,b 1時,a b 1,a b 0,a b 0 用 證明如下 include int main 輸出結果如下 equal...
ab》3c語言裡是什麼意思 啊,C語言中 a b b c x y 3是什麼意思
gt 不是c語言的保留字或標準函式名。看用在何處。它可能是 使用者自定義 變數名,也可能是 使用者自定義 函式名。例如 float gt 例如 int gt int a,int b 如果是在註解行裡,它是註解。例如 a is gt zero如果在字串裡,它是字元。例如 printf 5 gt 2 某...