Linux C程式設計第三章的10個問題以及解決方案

2021-08-09 02:25:37 字數 3991 閱讀 4304

1、

c語言的運算子可以分為哪幾類?

算術運算子:用於

各類數值運算,包括+、-、

*、/、

%、++、

--關係運算子:用於比較運算,包括》、

<、==

、>=

、<=、!=

邏輯運算子:

用於邏輯運算,包括

&&、||

、!位操作運算子:參與運算的量,按二進位制位參與計算,&,

|,!,~,

^,<<,>>

賦值運算子:

用於賦值運算,分為簡單賦值(=)

,和一些復合算數賦值和復合位運算賦值

,三類共

11種。

條件運算子

:這是乙個三目運算子,用於條件求值

(?:)

逗號運算子:

用於把若干表示式組合成乙個表示式(,)

指標運算子:取內容*和取位址

&位元組運算子:sizeof

特殊運算子:()

【】(陣列下標),成員運算子(->、.)

2.運算子的優先順序

是怎麼確定的?

優先順序

運算子

名稱或含義

使用形式

結合方向 說明

1 陣列下標

陣列名[

常量表示式

]左到右

() 圓括號

(表示式)/

函式名(

形參表) .

成員選擇(物件)

物件.成員名

->

成員選擇(指標)

物件指標->

成員名 ++

後置自增運算子

++變數名

單目運算子 --

後置自減運算子

--變數名

單目運算子 2

-負號運算子

-表示式

右到左

單目運算子

(型別)強制型別轉換

(資料型別

)表示式 ++

前置自增運算子

變數名++

單目運算子 --

前置自減運算子

變數名--

單目運算子 *

取值運算子

*指標變數

單目運算子 &

取位址運算子

&變數名

單目運算子 !

邏輯非運算子

!表示式

單目運算子 ~

按位取反運算子

~表示式

單目運算子

sizeof

長度運算子

sizeof(表示式)

3 /

除 表示式/

表示式左到右

雙目運算子 *

乘表示式*

表示式雙目運算子 %

餘數(取模)

整型表示式/

整型表示式

雙目運算子 4

+ 加表示式+

表示式左到右

雙目運算子 -

減表示式-

表示式雙目運算子 5

<< 左移

變數<<

表示式左到右

雙目運算子

>> 右移

變數》表示式雙目運算子 6

> 大於

表示式》

表示式左到右

雙目運算子

>=

大於等於

表示式》=

表示式雙目運算子

< 小於

表示式<

表示式雙目運算子

<=

小於等於

表示式<=

表示式雙目運算子 7

== 等於

表示式==

表示式左到右

雙目運算子 !=

不等於表示式!=

表示式雙目運算子 8

&按位與

表示式&

表示式左到右

雙目運算子 9

^按位異或

表示式^

表示式左到右

雙目運算子 10

|按位或

表示式|

表示式左到右

雙目運算子 11

&&邏輯與

表示式&&

表示式左到右

雙目運算子 12

||邏輯或

表示式||

表示式左到右

雙目運算子 13

?:條件運算子

表示式1?

表示式2:

表示式3

右到左

三目運算子 14

=賦值運算子

變數=表示式右到左

/= 除后賦值

變數/=

表示式 *=

乘後賦值

變數*=

表示式 %=

取模後賦值

變數%=

表示式 +=

加後賦值

變數+=

表示式 -=

減後賦值

變數-=

表示式

<<=

左移後賦值

變數<<=

表示式

>>=

右移後賦值

變數》=

表示式 &=

按位與後賦值

變數&=

表示式 ^=

按位異或後賦值

變數^=

表示式 |=

按位或後賦值

變數|=

表示式 15

, 逗號運算子

表示式,

表示式,…

左到右

從左向右順序運算

同一優先順序的運算子,運算次序由結合方向所決定

簡單歸納為:!>算數運算子

>

關係運算子

>&&>||>

賦值運算子 3、

什麼時候使用條件表示式比較多?

如果在條件語句中,只執行單個的賦值語句時,使用的比較多。

4.條件運算子的用法

條件運算子:(?:)

用乙個簡單的例子來說明。

if(a>b)

else

用條件運算子表示的條件表示式為:max=(a>b)?a:b;

5、邏輯運算子參與運算時注意什麼?

邏輯運算子

|兩邊的條件,只要有

乙個為真,則

結果為真,

只要有乙個為假,其加過為假。 6、

++,--操作符

的注意事項有哪些?

++是自增1,

--是自減1。

++a是自增1再用

a進行運算,

a++是先將

a用於運算再自增1

7、位操作為什麼可以有效提高程式執行的效率?

在電腦程式中,資料的位是可以操作的最小資料單位,理論上可以用「位運算」來完成所有的運算和操作,其非常的靈活。

8、位運算中的左移和右移

是什麼樣的?

左移和右移一樣,將數字以二進位制補碼的形式,向左或向右依次移動指定的位數

左移:格式:需要移位的數字

<< 移位的次數

運算規則:按二進位制形式把所有的數字向左移動對應的位數,高位移出(捨棄

),低位的空位補零。

數學意義:在數字沒有溢位的前提下,對於正數和負數,左移一位都相當於乘以2的

1次方,左移

n位就相當於乘以

2的次方。

右移:格式:需要移位的數字 >> 移位的次數

運算規則:按二進位制形式把所有的數字向右移動對應的位數,低位移出(捨棄

),高位的空位補符號位,即正數補零,負數補1。

數學意義:右移一位相當於除2,右移

n位相當於除以2的

n次方。這裡是取商。 9、

位運算的作用

?在計算機中,資料的位是可以操作的最小的資料單位,一般的位操作是用來控制硬體的,或者進行行資料的交換,但是靈活的位操作可以有效地提高程式執行的效率。

10、位運算除了提高運算效率外,再嵌入式系統程式設計中,還有啥廣泛運用?

位間的與(&)、或(

i)、非(~)。

程式設計珠璣第三章

第三章寫的有點太簡單了,可能作者是想在後面章節裡再詳細說吧!這一章就是作者說的幾句話印象還是很深刻。程式設計師在節省空間方面無計可施時,將自己從 中解脫出來,退回起點並記者並集 中精力研究資料,常常能有奇效。資料的 表示形式是程式設計的根本。正如人月神話的作者說 只要給我你設計的表,我就對你的程式一...

第三章 函式程式設計

函式是一段具有特定功能的 可重用的語句組,用函式名來表示並通過函式名進行功能呼叫。函式也可以看作是一段具有名字的子程式 特性 1.減少重複 2.使程式變的可擴充套件 3.使程式變得易維護 語法定義 def sayhi 函式名 print hello,i m nobody sayhi 呼叫函式 可以帶...

第三章程式設計題

每乙個程序都有乙個pcb 程序控制塊 其中包含程序執行的狀態等一系列資訊。當父程序fork 出乙個子程序,子程序執行結束後作業系統會 子程序使用的記憶體 開啟的檔案等資源。但是,依舊會保留pcb,因為其中包含子程序結束時的狀態等資訊,按理來說作業系統想把這個資訊傳遞給它的父程序。因此,父程序呼叫wa...