⑴ 救命啊!!!!!!!分析下個C程序 基礎題
因為立即數默認是整型數啊, 你改成1.0/2.0就好了啊.
關於s2, 因為h被聲明成浮點類型, 所以就按浮點運算了
⑵ C語言中 怎樣define 長整形
回看問題補抄充:這也沒有辦法呀,你可以試圖換一個編譯器,不要用TC,32位的編譯器一般都可以滿足你的要求。我只會C++,不知道C,您所說的(1024 * 1024) & 0xffff我也不是特別清楚。所以我只知道的是,C++之所以不讓我們用#define可能就是這個緣故吧,呵呵,在C++中實現您的代碼就可謂是輕而易舉:
const int AAA = 1024;
const int BBB = 1024;
const int DDD = 100;
const int EEE = 200;
const int FFF = AAA*BBB;
const int CCC = FFF / (DDD+EEE);
const int i_32_sz[] = {CCC, DDD};
⑶ c語言中,常量到底占不佔內存空間
宏定義不佔內存空間,因為宏在預處理階段就會被替換掉,到了編譯的階段是沒有宏存在的,它自然到不了可執行文件中,所以它不佔內存空間。
字面常量,占不佔空間要看情況,我不知道c語言標准中是否對此事作出規定,我就談談gcc的處理方法吧,這個設計匯編的問題。
int a;
a = 5;將這段反匯編,得到
可以看到,5是以立即數的形式出現的,所以它不佔內存。
然後再將a定義為float:
float a;
a = 5.0;
可以看到,程序的最後定義了5.0的單精度浮點表示,然後將其傳入eax寄存器,再賦值給a。
另外,字元常量不佔內存空間,字元串常量占內存空間。總之,整形常量是不佔空間的,其他占。
⑷ C語言整型常量轉化問題
首先要明白c語言的常量表達什麼?我們才能了解它的問題是什麼:
常量:其值不會發生改變的量,稱為常量。它們可以和數據類型接合起來分類。比如:整形常量,浮點型常量,字元常量等等,常量是可以不經過定義和初始化,而直接引用的。
常量分類:常量又分為:直接常量和符號常量。
直接常量又叫做:字面常量。如12,0,4.6,』a』,」abcd」
符號常量:如宏定義的:#define
pi
3.14
特點:常量的值在其作用域內不會發生改變,也不能再被賦值。其在出現時就被當作一個立即數來使用。也就是說,只能被訪問,被讀,而不能被寫,被賦值。
常量所在的內存空間就被加上了只讀的屬性,它有點類似於const關鍵字,那麼它常見的問題如下:
(1) 可以定義const常量,具有不可變性。
例如:
const
int
max=100;
int
array[max];
(2) 便於進行類型檢查,使編譯器對處理內容有更多了解,消除了一些隱患。例如:
void
f(const
int
i)
{
.........}
//編譯器就會知道i是一個常量,不允許修改;
(3) 可以避免意義模糊的數字出現,同樣可以很方便地進行參數的調整和修改。
(4) 可以保護被修飾的東西,防止意外的修改,增強程序的健壯性。
還是上面的例子,如果在函數體內修改了i,編譯器就會報錯;
例如:
void
f(const
int
i)
{
i=10;//error!
}
(5) 為函數重載提供了一個參考。例如:
class
a
{
......
void
f(int
i)
{......}
//一個函數
void
f(int
i)
const
{......}
//上一個函數的重載
......
};
⑸ C語言里怎樣理解長整型 短整型 和無符號型變數和常量
1、變數:抄是一塊內存區域,一塊內存包含兩個屬性,一個是地址,一個是存儲的內容,即值。所以在c語言中每個變數都有一個地址,也有自己存儲的內容。
2、常量:指的是不會被修改的量,這個概念實際上來自匯編語言中的立即數概念,它是存儲於指令代碼中的。
3、整型:用於描述整數的數據類型。
4、長整型、
短整型
、無符號整型,主要是通過整數的符號以及所佔內存位元組的大小來區分的,做為整數可以分為正數和負數,因此C語言中有了無符號數和有符號數的區別,無符號整型,最小值是0,最大值為2^n-1,n是在內存中類型所佔的位元組數。
一般來說,int類型佔4個位元組,short短整型佔2個位元組,long長整型佔4或者8個位元組。具體所佔位元組的大小可以通過sizeof運算符來獲取。
⑹ 什麼叫非顯式的整型立即數
理解一:8位擴展到32位,若為正數或0,對高24位全部補0;若為負數,對高24位全部補1。這樣,原來的8位立即數就擴展為等效的32位立即數。理解二:是將立即數放到32位的寄存器的低8位中,然後邏輯左移24次,可得到一個32位數。
⑺ 如何知道整型字面值常量的內存地址
不可以對整型字面常量取地址,因為它沒有地址,它就是個立即數,它的暫存區域是寄存器,而不是內存
⑻ c++的一個表達式問題
如果你抄不是在研究編譯原理、程序設計語言的話,這種問題就沒必要深究。記著「在C++中不能取臨時變數的地址」這樣一個結論就夠了。
臨時變數是一個右值,編譯器不一定要為它分配內存的。只有明明白白定義出來的變數,編譯器才必須為它分配內存,這時取地址才有意義。
⑼ c語言整型常量問題
首先要明白C語言的常量表達什麼?我們才能了解它的問題是什麼:
常量:其值不會發生改變的量,稱為常量。它們可以和數據類型接合起來分類。比如:整形常量,浮點型常量,字元常量等等,常量是可以不經過定義和初始化,而直接引用的。
常量分類:常量又分為:直接常量和符號常量。
直接常量又叫做:字面常量。如12,0,4.6,』a』,」abcd」
符號常量:如宏定義的:#define PI 3.14
特點:常量的值在其作用域內不會發生改變,也不能再被賦值。其在出現時就被當作一個立即數來使用。也就是說,只能被訪問,被讀,而不能被寫,被賦值。
常量所在的內存空間就被加上了只讀的屬性,它有點類似於const關鍵字,那麼它常見的問題如下:
(1)可以定義const常量,具有不可變性。 例如:
const int Max=100; int Array[Max];
(2)便於進行類型檢查,使編譯器對處理內容有更多了解,消除了一些隱患。例如:
void f(const int i) { .........} //編譯器就會知道i是一個常量,不允許修改;
(3)可以避免意義模糊的數字出現,同樣可以很方便地進行參數的調整和修改。
(4)可以保護被修飾的東西,防止意外的修改,增強程序的健壯性。 還是上面的例子,如果在函數體內修改了i,編譯器就會報錯; 例如:
void f(const int i) { i=10;//error! }
(5)為函數重載提供了一個參考。例如:
class A { ......
void f(int i) {......} //一個函數
void f(int i) const {......} //上一個函數的重載 ......
};