c語言資料型別和運算子 表示式的十個問題

2021-08-14 23:57:29 字數 1700 閱讀 9125

1.全域性變數與區域性變數的區別以及兩者的優先順序關係

區別:全域性變數作用於整個源程式檔案,而區域性變數只是作用於某個具體的函式內。在c語言中,main函式的區域性變數也僅能在main函式中使用,在其他函式中亦不可使用。

優先順序關係:當在同乙個原始檔中時,若外部變數和區域性變數同名,則在區域性變數的作用範圍內,外部變數被遮蔽,不起作用。

2.關於常量以及const int *p以及 int * const p的區別

常量所在記憶體空間被加上了唯讀屬性,因此其值不會變;對於const的處理:將除了const的語句外的型別修飾符去掉即可。  const int *p去掉int後就是

const *p

,因而p指向的空間的值不會變;然而,int * const p去掉int *之後就變得不一樣了。const p

即p不可再變,p不可指向別的位址,但是p所指向的內容可變。

3.宣告與定義的區別

定義的形象的理解就是一旦乙個物件被分配到乙個記憶體,那麼這個名字就和這塊記憶體匹配起來,永遠只能

定義一次

;至於宣告的理解需要分為兩個層面:第一點,宣告可以

出現多次

;第二點,別的地方不可再用它作為變數名或物件名。

4.暫存器變數的使用

程式是儲存在記憶體中的,因為cpu的速度遠遠快於記憶體和暫存器,而暫存器的速度又要遠遠快於記憶體(與兩者的物理結構和造價體積大小有關),因此在操作過程中一般是cpu先從記憶體取出資料到暫存器中,運算完後再送回到記憶體中。在我們設定暫存器變數的過程中,考慮到

暫存器的速度快

,因此暫存器變數的優勢在此。

但是暫存器變數不可設定太多,一方面因為暫存器可能被其他程式占用;另一方面暫存器變數必須是cpu能接收的型別。我們還要注意到暫存器變數是沒有位址的,因而不可以使用區位址符。

5.typedef與#define的區別和聯絡

兩者的聯絡typedef與#define兩者都可以用來定義,兩者的區別也很明顯,對於

typedef

是為乙個

新的型別起新名字

,但是對於

#define

只是簡單的

字串替換

。因而在涉及到有

指標最好用typedef,當有

表示式則必須加個括號

才能成功定義。

6.構造型別

構造型別分為三類:陣列型別、結構型別、公用型別;

陣列型別是由相同型別的資料構成;結構型別可以由不同型別構成;不同資料不會同時使用為了節約記憶體,不同資料占用同一記憶體,就是公用型別。

7.關於運算子優先順序的記憶方法

!>算術運算子》關係運算子》&&>||>賦值運算子

8.關於邏輯運算子

則整個事件也就為假;同時只要a為  對於||而言,只要a||b中,a事件為真,則b事件就不需要再考慮,則整個事件也就為

真;a事件為

假,則整個事件也就為假。書中例子:if((++i>0)||(++j>0)),如果(++i)>0,如果為真則不再計算。

9.關於條件運算子

條件運算子的一般形式是:表示式1?表示式2:表示式3

其含義很簡單,若表示式1為真,則以表示式2的值作為表示式的值,否則是表示式3的值作為返回值;其次要注意條件表示式的優先順序雖然低於關係運算子和算術運算子,但是要高於賦值符。

10.關於(++i)和(i++)的區別

如果有表示式a=i++,則其等價於a=i; i=i+1;如果有表示式a=++i ,則其等價於 i=i+1;a=i;

c語言資料型別 運算子 表示式

1.c語言資料型別 分為三類 基本型別 構造型別 指標型別。基本型別包括 字元型 char 整型 int 長整型型別 long 短整型型別 short 實型中分單精度實型 float 和雙精度實型 double 無值型 void 構造型別包括 列舉型 enum 陣列 構造體 struct 共用體 u...

資料型別,運算子和表示式

一 python的資料型別分為數字型別 int float complex bool 字串型別 列表型別 元組型別 字典型別和集合型別。1.整形 int 整型表示儲存的資料是整數,例如1 1等。在計算機語言中,整型資料可以用二進位制 八進位制 十進位制或十六進製制形式並在前面加上 或 表示。如果用二...

c語言常量表示式 資料型別 運算子和表示式

資料是c語言基本字元組合成的資訊表達,它既是程式加工和處理的物件,也是程式加工和處理的結果。同樣的字元組合可能會表示不同的涵義,因此需要對c語言程式裡面的每一組資料進行定義,好方便最終機器對該資料的識別和處理。在c語言裡面對資料做了如下圖所示的分類 為什麼要對資料這麼分類呢?因為今後要寫c語言程式的...