大小端
把大小端拿出來扯淡,是因為簡體中文的翻譯很扯淡。而繁體的大尾序/小尾序卻比較好,沒有歧義。
大端序(英:big-endian)或稱大尾序。
小端序(英:little-endian)或稱小尾序。
https://zh.wikipedia.org/wiki/%E5%AD%97%E8%8A%82%E5%BA%8F
理解方式一:
內(nèi)存地址從小向大增長方向作為向量,地址增長方向作為頭,后面為尾巴(endian)。大尾巴順序是說,尾巴上的是大王,它是高字節(jié)(the most significant)
例如,內(nèi)存地址從小到大的內(nèi)容為 0A0B0C0D 表示一個32bit整數(shù),則大尾巴規(guī)則下,0A表示高字節(jié);小尾巴規(guī)則下0D是高字節(jié)。
理解方式二:
32bit整數(shù)0A0B0C0D,在大尾巴規(guī)則下,最重要字節(jié)先放入內(nèi)存,也就是如果OA是高位,則OA先放入內(nèi)存;小尾巴規(guī)則下,最重要字節(jié)后放入內(nèi)存,如果0D是低字節(jié),則OD先放入內(nèi)存,這也是windows下的規(guī)則。
Programming-languages--C
Programming-languages--C.pdf
!E is equivalent to(0==E)
The result has type int.
The expression !E is equivalent to (0==E).
&*E is equivalent to E (even if E is a null pointer), and &(E1[E2]) to ((E1)+(E2))
the number of elements in an array
sizeof array / sizeof array[0]
<占位項2>
數(shù)不清的小技巧......
窗口console
INIT
AllocConsole();
freopen("CONOUT$", "w", stdout);
std::cout << "This works" << std::endl;
DEINIT
FreeConsole()
扯個構(gòu)造函數(shù)不要調(diào)用虛函數(shù)的淡
今天要扯的淡是,在C++構(gòu)造函數(shù)里不要調(diào)用虛函數(shù),哈哈哈
構(gòu)造函數(shù)里,編譯器會對虛函數(shù)的調(diào)用不會經(jīng)過虛表,直接call了當前的這個函數(shù)地址
虛表的地址在構(gòu)造函數(shù)最后才會賦值到this位置的地址上
扯個bit field(位段)的淡
這個蛋可以拿來扯的一個原因是中文維基說,“位段在本質(zhì)上是不可移植”,不嚴謹。然后看下修訂歷史,果然有不嚴謹?shù)目赡堋?
unsignedintopaque:1;
https://en.wikipedia.org/wiki/Bit_field
https://zh.wikipedia.org/wiki/位段
我的奮斗---一個三角形一生的自傳
Life of a triangle - NVIDIA's logical pipeline
在最后,三角形被顯卡的GPC單元瓜分了
扯個">>="的淡
gap>>=1
https://zh.wikipedia.org/wiki/希爾排序
一個右移并賦值的操作
扯個struct與class造的孽
世人都說在C++里struct與class沒區(qū)別,除了默認private權(quán)限不一樣,還有模板的中class與typename都可以作為類型參數(shù)struct卻不行,再沒其他區(qū)別了。我今天想說的是,這些都是扯淡,放屁,區(qū)別大著呢。
你為了最小依賴前置聲明了class Foo,但是定義的時候用的struct Foo,丫可以正常編譯,卻在鏈接的時候報錯,丫是VC++2015,扯了個天大的蛋。
扯個Amazon GameLift Server SDK的淡
這個蛋可以扯的原因是兩行命令行就可以完成構(gòu)建,編譯一條龍服務(wù),生成的solution文件里還看不到C++源碼
https://aws.amazon.com/gamelift/getting-started/?sc_channel=el&sc_campaign=unrealmarketplace_amazongameliftsdk_2017&sc_publisher=epicgames&sc_country=mult&sc_geo=mult&sc_category=amazongamelift&sc_outcome=other
扯個overridding和overloading的淡
簡單來說,overridding就是覆蓋,overloading就是重定向。扯淡的是,在計算機里2個行為只能死記,其實名字不變行為互換在字面上也是可以的。
overridding
方法覆蓋
virtual
riding,騎馬;over riding,蓋到馬上,騎馬騎過了頭?虛的,畫蛇添足,虛函數(shù)也
overloading
方法重載,本意是針對參數(shù)的,多一個形參就過overload了,過多了
參數(shù)和返回值不同
polymorphism(多態(tài))
多態(tài)(英語:polymorphism)指為不同數(shù)據(jù)類型的實體提供統(tǒng)一的接口。
多態(tài)
數(shù)學(xué)符號
https://zh.wikipedia.org/wiki/數(shù)學(xué)符號表
∀ 任意
∃存在
:=定義
⊆子集
<占位標題>
<占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述>
<占位項1>
<占位項2>
將5個上限為64的數(shù)字放入一個32位的內(nèi)存中
//將5個上限為64的數(shù)字放入一個32位的內(nèi)存中
public void SetFlag(int slot, uint value)
{
Debug.Assert(value < 64, "value<64 ");
int shift = dir * 6;
con = (uint)((con & ~(0x3f << shift)) | ((value & 0x3f) << shift));
string text = System.Convert.ToString(con, 2).PadLeft(32, '0');
}
public int GetFlag(int slot)
{
return ((int)con >> dir * 6) & 0x3f;
}
<占位標題>
<占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述>
<占位項1>
<占位項2>
<占位標題>
<占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述>
<占位項1>
<占位項2>
<占位標題>
<占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述>
<占位項1>
<占位項2>
<占位標題>
<占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述>
<占位項1>
<占位項2>
<占位標題>
<占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述>
<占位項1>
<占位項2>