大小端
把大小端拿出來扯淡,是因為簡體中文的翻譯很扯淡。而繁體的大尾序/小尾序卻比較好,沒有歧義。
大端序(英:big-endian)或稱大尾序。
小端序(英:little-endian)或稱小尾序。
https://zh.wikipedia.org/wiki/%E5%AD%97%E8%8A%82%E5%BA%8F
理解方式一:
內存地址從小向大增長方向作為向量,地址增長方向作為頭,后面為尾巴(endian)。大尾巴順序是說,尾巴上的是大王,它是高字節(the most significant)
例如,內存地址從小到大的內容為 0A0B0C0D 表示一個32bit整數,則大尾巴規則下,0A表示高字節;小尾巴規則下0D是高字節。
理解方式二:
32bit整數0A0B0C0D,在大尾巴規則下,最重要字節先放入內存,也就是如果OA是高位,則OA先放入內存;小尾巴規則下,最重要字節后放入內存,如果0D是低字節,則OD先放入內存,這也是windows下的規則。
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>
數不清的小技巧......
窗口console
INIT
AllocConsole();
freopen("CONOUT$", "w", stdout);
std::cout << "This works" << std::endl;
DEINIT
FreeConsole()
扯個構造函數不要調用虛函數的淡
今天要扯的淡是,在C++構造函數里不要調用虛函數,哈哈哈
構造函數里,編譯器會對虛函數的調用不會經過虛表,直接call了當前的這個函數地址
虛表的地址在構造函數最后才會賦值到this位置的地址上
扯個bit field(位段)的淡
這個蛋可以拿來扯的一個原因是中文維基說,“位段在本質上是不可移植”,不嚴謹。然后看下修訂歷史,果然有不嚴謹的可能。
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沒區別,除了默認private權限不一樣,還有模板的中class與typename都可以作為類型參數struct卻不行,再沒其他區別了。我今天想說的是,這些都是扯淡,放屁,區別大著呢。
你為了最小依賴前置聲明了class Foo,但是定義的時候用的struct Foo,丫可以正常編譯,卻在鏈接的時候報錯,丫是VC++2015,扯了個天大的蛋。
扯個Amazon GameLift Server SDK的淡
這個蛋可以扯的原因是兩行命令行就可以完成構建,編譯一條龍服務,生成的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,蓋到馬上,騎馬騎過了頭?虛的,畫蛇添足,虛函數也
overloading
方法重載,本意是針對參數的,多一個形參就過overload了,過多了
參數和返回值不同
polymorphism(多態)
多態(英語:polymorphism)指為不同數據類型的實體提供統一的接口。
多態
數學符號
https://zh.wikipedia.org/wiki/數學符號表
∀ 任意
∃存在
:=定義
⊆子集
<占位標題>
<占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述占位描述>
<占位項1>
<占位項2>
將5個上限為64的數字放入一個32位的內存中
//將5個上限為64的數字放入一個32位的內存中
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>