標籤:
1.在c++中可以通過"::"來直接操作全域變數。
2.i++與++i效率的比較。
(1)內建資料類型時,他們的效率差別不大。
(2)自訂資料類型(類等)的情況,(++i)可以返回對象的引用,而(i++)必須返回對象的值,所以導致在大對象的時候產生了較大的複製開銷,效率低。
3.假設浮點變數的名字為x,它與0.0比較:
if((x<=-EPSINON)&&(x<=EPSINON))
if((x<-EPSINON)||(x>EPSINON))
4.註:當運算式中存在無符號類型時,所有的運算元都自動轉換成無符。
char getChar(int x,int y)
{
char c;
unsigned int a=x;
(a+y)>10?(c=1):(c=2);
return c;
}
(1)(7,-7):-7轉化成一個很大的數,與7相加正好溢出,其值為0。
(2)(7,-8):-8轉化成一個很大的數,與7相加差1就溢出了,返回1。
5.兩數交換,推薦使用按位異或的方式。
void swap(int &a,int &b) //採用引用傳參的方式
{
a^=b;
b^=a;
a^=b;
}
6.atexit()函數,在mian()函數執行完後被執行。
標頭檔:#include <stdlib.h>
atexit()被調用的順序與他們在main()中註冊的順序相反。
7.sizeof() //結構體、類等,大小需要對齊。
(1)普通函數不佔記憶體,只用虛函數佔用一個指標大小的記憶體。 //virtual void print() {}
(2)空類:class A{},編譯器會安排一個指標大小的記憶體。
(3)#pragma pack() //強行改變對其大小
#include <iostream.h>
#pragma pack(2)
struct test{
char c;
short s1;
short s2;
int i;
}
int main()
{
cout << sizeof(test)<<endl;
return 0;
}
=>10
8.inline 內嵌函式的適用場合:用來定義存取函數(set/get函數等)。
c++面試(一)