第二章資料型別十個問題

2021-08-09 01:27:28 字數 2434 閱讀 7727

1. 

變數的值被覆蓋後如何恢復

不能恢復,以最後一次賦值的值為準。

2. 巨集定義與const常量定義之間有什麼區別

define是巨集定義,程式在預處理階段將用

define

定義的內容進行了替換,因此程式執行時,常量表中沒有用

define

定義的常量,系統不為它分配記憶體;

const

定義的常量,在程式執行時在常量表中,系統為它分配記憶體。

define定義的常量,預處理時直接進行了替換,所以編譯時不能進行資料型別檢驗;

const

定義的常量,在編譯時進行嚴格的型別檢驗,可以避免出錯。

define 定義表示式時要注意「邊緣效應」。

3  型別強制轉換是否要占用記憶體空間

在c語言中,強制型別轉換有兩種含義:

1.將乙個資料,複製為另乙個資料型別,並且使用新型別的資料,此時可以認為新型別的資料,在記憶體結構方面與原有資料沒有任何關係,這是實實在在的發生了轉換,並且執行這個轉換相關的**是編譯器生成的,例如:

char c=』c

』 int i = (int) c;

2.將乙個資料當作另外乙個資料型別使用,讓編譯器認為這就是另外乙個資料型別,此時資料沒有發生任何轉換,在計算機的角度沒有任何事情發生,也不為這個轉換生成任何**,只是編譯器認為這個語句合法了

4  指標定義時『*

』靠著型別還是變數

兩種情況對編譯器來說一樣,只是讓閱讀**的人看起來方便,比如:

int  *p,q;和

int*  p,q;   

兩種定義都是p為

int型別指標,q為

int型別,閱讀**的人可能會把第二種情況中的p和

q誤認為

int型別指標

5  宣告和定義如何區分

變數和物件不加extern 永遠是定義,類中的除外

函式只有函式頭是宣告,有函式體是定義

類永遠只是宣告,類成員函式的函式體是定義

6  auto,register,extern,static使用有什麼區別

對於auto變數:是函式中的區域性變數,動態地分配儲存空間,資料儲存在動態儲存區中,在呼叫該函式時系統會給他們分配儲存空間,在函式呼叫結束時就自動釋放這些儲存空間

對於register變數:為了提高效率,

c語言允許將區域性變數的值放在

cpu中的暫存器中,只有區域性自動變數和形式引數可以作為暫存器變數

對於extern變數:外部變數是在函式的外部定義的,它的作用域從變數定義處開始,到本程式檔案的結尾,如果外部變數不在檔案的開頭定義,其有效的作用範圍只限於定義處到檔案終

對於static變數:靜態區域性變數屬於靜態儲存類別,在靜態儲存區內分配儲存單元,在程式整個執行期間都不釋放

7  列舉能做到事,#define能不能做到?如果能,那為什麼還需要列舉

#define 可以編譯任意型別的常量,而列舉只能是定義整型常量

列舉可以一次定義大量常量,#define只能一次定義乙個

列舉可以集中管理資料,具相同屬性的整型資料可使用列舉,列舉可實現取值的自增,也可指定每個列舉的值,編寫**更容易,相對來說能減少出錯的機會,也便於**的後期維護和修改,列舉在記憶體中不佔空間

8  聯合體變數如何賦值和使用

對聯合體變數的賦值,使用都只能是對變數的成員進行

聯合變數的成員表示為:聯合變數名.成員名

不允許只用聯合變數名作賦值或其它操作,也不允許對聯合變數作初始化賦值,賦值只能在程式中進行

乙個聯合體變數,每次只能賦予乙個成員值。乙個聯合體變數的值就是聯合變數的某乙個成員值

9  用void表示的資料型別有兩種相反的意思,如何區分

void 資料型別對立面,即「無型別」,本身不是一種資料型別,使用如下:

(1)如果函式沒有返回值,那麼應將其宣告為

void

型別(2)如果函式無引數,那麼宣告函式引數為

void

void * 通用型別指標,可以指向任何型別資料,例:

void *pvoid;float *pfloat; pvoid=*pfloat;//

正確。無需強制轉型(任何型別的指標都可以直接賦值給

void*[

賦值給其它型別,需要強轉])

10  

valotile與

const

有什麼區別

如果乙個變數不會被本程式改變,通常可能給它加上const,,但如果該變數可能被其它程式(或計算機操作過程中自己)改變而本程式又在檢測這個變數的值,就需要給它加上

volatile,

於是變數

i就同時有

volatile

和const,

這個時候

i就具有

const

和volatile

的雙重屬性,

i變數不可以在編譯過程中被程式**修改,同時編譯器不得對

i進行優化編輯

第二章 資料型別

1byte 8bit 1kb 1024byte 1mb 1024kb 1gb 1024mb 1tb 1024gb intfloat 用float計算精度會不準確,需要匯入decimal模組 strbool true,false int 可以將整數型的str和float,bool轉換成int str ...

Python第二章資料型別

基本資料型別 python 中的變數不需要宣告。每個變數在使用前都必須賦值,變數賦值 以後該變數才會被建立。python 中,變數就是變數,它沒有型別,我們所說的 型別 是變數所指的記憶體中物件的型別。等號 用來給變數賦值。等號 運算子左邊是乙個變數名,等號 運算子右邊是儲存在變數中的值。例如 x ...

第二章 變數和資料型別

頭字母大寫 name athy irene print name.title 全部大寫 name athy irene print name.upper 全部小寫 name athy irene print name.lower 字串合併 first name1 athy last name1 ir...