大小端
把大小端拿出来扯淡,是因为简体中文的翻译很扯淡。而繁体的大尾序/小尾序却比较好,没有歧义。
大端序(英: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>