負號的優先順序比 來的高

2021-05-23 12:41:19 字數 2374 閱讀 5859

程式設計之美:求二進位制數中的1的個數:第二個補充習題

一開始**如下:

#include

#include

int main()

printf("flag=%d/n",flag);

}執行以後,發現結果不對,用printf輸出結果,來進行除錯。

最後原因知道了,原來負號的優先順序比&來的大,然後搞定**:

#include

#include

int main()

printf("flag=%d/n",flag);

}網上摘錄了c語言操作符的優先順序:

優先順序運算子

名稱或含義

使用形式

結合方向 說明

1 陣列下標

陣列名[ 常量表示式]

左到右

() 圓括號

(表示式)/ 函式名( 形參表)

. 成員選擇(物件) 物件

.成員名

->

成員選擇(指標)

物件指標-> 成員名

2 -

負號運算子 -

表示式

右到左

單目運算子 (

型別)

強制型別轉換 (

資料型別) 表示式

++ 自增運算子 ++

變數名/ 變數名++

單目運算子 --

自減運算子 --

變數名/ 變數名--

單目運算子 *

取值運算子 *

指標變數

單目運算子 &

取位址運算子 &

變數名

單目運算子 !

邏輯非運算子 !

表示式

單目運算子 ~

按位取反運算子 ~

表示式

單目運算子

sizeof

長度運算子

sizeof(

表示式)

3 /

除 表示式/ 表示式

左到右雙目運算子 *

乘表示式* 表示式

雙目運算子 %

餘數(取模)

整型表示式/ 整型表示式

雙目運算子 4

+ 加表示式+ 表示式

左到右雙目運算子 -

減表示式- 表示式

雙目運算子 5

<<  左移

變數<< 表示式

左到右雙目運算子

>>  右移

變數》 表示式

雙目運算子 6

>  大於

表示式》 表示式

左到右雙目運算子

>=

大於等於

表示式》= 表示式

雙目運算子

<  小於

表示式< 表示式

雙目運算子

<=

小於等於

表示式<= 表示式

雙目運算子 7

== 等於

表示式== 表示式

左到右雙目運算子 !=

不等於表示式!= 表示式

雙目運算子 8

&按位與

表示式& 表示式

左到右雙目運算子 9

^按位異或

表示式^ 表示式

左到右雙目運算子 10

|按位或

表示式| 表示式

左到右

雙目運算子 11

&&邏輯與

表示式&& 表示式

左到右雙目運算子 12

||邏輯或

表示式|| 表示式

左到右雙目運算子 13

?:條件運算子

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

右到左三目運算子 14

=賦值運算子

變數= 表示式

右到左

/= 除后賦值

變數/= 表示式

*= 乘後賦值

變數*= 表示式

%= 取模後賦值

變數%= 表示式

+= 加後賦值

變數+= 表示式

-= 減後賦值

變數-= 表示式

<<=

左移後賦值

變數<<= 表示式

>>=

右移後賦值

變數》= 表示式

&= 按位與後賦值

變數&= 表示式

^= 按位異或後賦值

變數^= 表示式

|= 按位或後賦值

變數|= 表示式

15 ,

逗號運算子

表示式, 表示式, …

左到右

從左向右順序運算

說明:

Linux的高優先順序workqueue

在專案中,有乙個時間關鍵的操作,而linux本身是分時型作業系統,雖然絕大部分情況可以滿足時間上的要求,但是,時間分布的離散性還是有點大。考慮引入linux real time 補丁,研究發現,即使引入這個補丁,依然無法到達rtos的水平,而且使用起來還比較複雜。後來閱讀workqueue 發現,專...

設定優先順序 執行緒設定那麼高的優先順序,它起作用了嗎?

我們知道在構建乙個執行緒物件的時候可以給執行緒設定乙個優先順序,就像下面這樣 public class myrunnable implements runnable public class myrunnabletest 或許你曾經有過這樣的想法,如果有多個執行緒的話,是不是可以按照這種優先順序設定...

的優先順序大小 需求價值與優先順序

我們會接到不同 的需求,有的 於業務部門 領導要求,有的 於使用者反饋 線上問題,有的是市場反饋建議,或者競品已支援等等。收到原始需求之後,我們怎麼知道哪些需求要做?哪些需求要優先做,哪些可以往後排?或者在需要澄清需求價值時,我們要回答哪些問題後,才算講清楚了需求價值。又如何做需求的優先順序排序。首...