1)Switch(selector){
case value1:statement;break;
case value1:statement;break;
}
selector必須是產生整數值的表達式。不能使用字符串類型對象。
2)運算符優先級
首先說,這是筆試的時候經??嫉膯栴}。為什么你就不能寫的規范清晰些,非要!++a--&b這樣寫呢親?加個括號會死么??。?!你鼓勵你的員工都寫成這個樣子么?
3)沒有long float類型,只有 long int 和 long double
4)連續分配的變量在內存中是連續存放的。
5)局部變量
也稱為自動變量,因為在進入作用域的時候自動生成,離開作用域后自動消失。auto類型。
6)寄存器變量
register,告訴編譯器,盡可能快地訪問這個變量。只是一個暗示,不能保證變量放在寄存器中。限制:不能得到其地址。
7)靜態變量
static,初始化只在函數第一次調用時執行,函數調用之間變量的值不變。在函數范圍外不可見。
在某個作用域外不可訪問:一、在所有函數外部,表示”在文件的外部不可以用該名字“;二、在函數內部表示”在函數外部不可以用該名字“
8)外部變量
extern
9)內部連接
只對正在編譯的文件創造存儲空間。用內部連接,其他文件可以使用相同的標識符或者全局變量,連接器不會發現沖突,也就是為每一個標識符創建單獨的空間。內部連接由static指定。
10)外部連接
為所有被編譯過的文件創建一片單獨的存儲空間。全局變量和函數有外部連接, 用extern可以從其他文件訪問它們。連接器不知道自動變量,他們只臨時存在于棧上。
11)volatile變量
告訴編譯器”不知道何時會改變“
12)打印二進制格式:
void PrintBinary(const unsigned char val)
{
for(int i = 7; i >= 0; i--)
if(val & (1 << i) )
cout <<"1";
else
cout <<"0";
}
12)逗號運算符,只產生最后一個表達式的值。
13)C++中的類型轉換
1) static_cast 靜態類型轉換,非強制轉換,窄化轉換(非向下轉換,那是dynamic_cast的工作),void* 的強制轉變,隱式類型變換和雷層次的靜態定位(向上轉換)
2) const_cast 常量轉換從const轉為非const, 或者從volatile轉為非volatile
const int i = 0;int* j = (int*)&i;//cannot convert a parament from const int* to int*
int& j = const_cast<int*>(&i);
long* l = const_cast<long*>(&i);//Error
3) reinterpret_cast重解釋轉換,最不安全,最容易出問題。一般是指針間的轉換。
4) dynamic_cast 動態類型轉換,運行期判斷該轉換是否正確。
14)enum{circle, square, rectangle};
15) 指針和數組
void func1(int a[], int size)
{
for(int i = 0;i < size; i++)
a[i] = i;
}
void func2(int* a, int size)
{
for(int i = 0;i < size; i++)
a[i] = i;
}
第一個明顯更容易讓人明白這是傳遞的一個數組,數組一般都采用傳地址的方式。
16)把變量和表達式轉換成字符串
#define PR(x) cout << #x "=" <<x <<"\n";
相當于cout <<“ a= "<<a << endl;
1
1
posted on 2012-05-28 17:23
Dino-Tech 閱讀(266)
評論(3) 編輯 收藏 引用