《C和指針》第三章書後問題

在這裏插入圖片描述
打開頭文件 <limits.h> 可以看到字符和各種整數類型的特點。
在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
打開頭文件 <float.h> 可以看到定義。

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
許多編譯器會報警告。 當 long 整形變量的值在 short 範圍內,變量值不變,當 long 整形變量的值超過 short 時,我測試的是去掉高位,只保留低 8 位的數據賦給 short 整形變量。

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
不行

在這裏插入圖片描述
char 類型在正常情況下是 unsigned。

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
沒有區別,位於函數起始部分的變量屬於自動變量,在聲明變量的同時進行初始化和先聲明後賦值只有風格之差。

在這裏插入圖片描述
左邊和之前一樣,右邊會出錯,constant 變量不能進行賦值。

在這裏插入圖片描述
對,除非代碼塊中有嵌套的代碼塊聲明瞭相同名字的變量。

在這裏插入圖片描述
錯,自動整型變量作用域在當前代碼塊中。

在這裏插入圖片描述
不會,在代碼塊中變量聲明爲 static 只會改變它的存儲類型,不會改變作用域和鏈接屬性。

在這裏插入圖片描述
不需要

在這裏插入圖片描述
不會,鏈接屬性從 external 變爲 internal ,但是同一個源文件中還是可以訪問。

在這裏插入圖片描述
不需要,缺省鏈接屬性爲 external。

在這裏插入圖片描述
會,聲明中包含 static 鏈接屬性變爲 internal,其他源文件不能進行訪問。

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
出現在代碼塊內部時:
a 爲局部變量,存儲類型爲 automatic,每次函數調用時進行初始化,作用域爲當前代碼塊,無鏈接屬性。
出現在代碼塊外部時:
a 爲全局變量,存儲類型爲 static,程序運行前初始化一次,作用域爲當前文件,external 鏈接屬性。

在這裏插入圖片描述
有點讓人困惑的是變量 a,external 鏈接屬性肯定在代碼塊外面,但是作用域 x 可以訪問而 y 不可以,小技巧是把函數 y 放在變量 a 的聲明之前。
不過變量 b 鏈接屬性爲 none 而函數 x、y 都可以訪問,這裏應該是題目有問題,變量 b 的鏈接屬性應該是 internal。

static char b = 2;
void y(){}
int a = 1;
void x()
{
	int c = 3;
	static float d = 4;
}

在這裏插入圖片描述
在這裏插入圖片描述
錯誤:第 6 行變量 c 的聲明和函數形參中的 c 衝突。下面的比較瑣碎。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章