c 變數初始化規則

2021-07-22 05:34:55 字數 1429 閱讀 7353

#include #include #include #include #include using namespace std;

#define num 10000

class bclass

// 對於常量型成員變數和引用型成員變數,必須通過引數化列表的方式進行初始化

//普通成員變數也可以放在函式體裡,但是本質其實已不是初始化,而是一種普通的運算操作-->賦值運算,效率也低

private:

int i; // 普通成員變數

const int ci; // 常量成員變數

int &ri; // 引用成員變數

static int si; // 靜態成員變數

static int si2; // error: 只有靜態常量成員變數,才可以這樣初始化

static const int csi; // 靜態常量成員變數

static const int csi2 = 100; // 靜態常量成員變數的初始化(integral type) (1)

static const double csd; // 靜態常量成員變數(non-integral type)

//static const double csd2 = 99.9; // error: 只有靜態常量整型資料成員才可以在類中初始化

static const double csd2;

};//注意下面三行:不能再帶有static

int bclass::si = 0; // 靜態成員變數的初始化(integral type)

const int bclass::csi = 2; // 靜態常量成員變數的初始化(integral type)

const double bclass::csd = 99.9; // 靜態常量成員變數的初始化(non-integral type)

// 在初始化(1)中的csi2時,根據著名大師stanley b.lippman的說法下面這行是必須的。

// 但在vc2003中如果有下面一行將會產生錯誤,而在vc2005中,下面這行則可有可無,這個和編譯器有關。

//const int bclass::csi2=100;

int global; //初始化為0

char ch; //初始化為空字元

int a[5]; //初始化為全零陣列

char ch1[5]; //初始化為null陣列

int main()

C 變數初始化規則

1 定義變數的時候,如果沒有初始化,它的值是什麼呢?它的值取決於變數的型別和變數定義的位置。2 考慮基本型別的變數,定義時沒有初始化。如果定義在方法外部,初始化為0,如果定義在方法內部,不被初始化。使用未初始化的變數,導致未定義行為。未初始化的變數事實上,也有乙個值,這個值是隨機的。因此強烈建議,基...

C 中變數預設初始化規則

定義沒有初始化式的變數時,系統有時候會幫我們初始化變數。系統如何初始化取決於變數的型別以及變數定義的位置。1 內建型別變數是否自動初始化取決於變數定義的位置。函式體外定義的變數初始成0 函式體內定義的變數不進行自動初始化。除了用作賦值操作的左運算元,其他任何使用未初始化變數的行為都是未定義的,不要依...

C 初始化變數

1.初始化變數 int i1 7.2 正確,但是i1的值變為了7 int i 建議使用初始值列表 int i2 錯誤 初始值列表確保不會發生某些可能導致資訊丟失的型別轉換 int i3 錯誤 同上,且 是多餘的 2.使用auto關鍵字 struct record auto p new record ...