C++从入门到放弃 第四章[sizeof&强制类型转换]

C++从入门到放弃 第四章[sizeof&强制类型转换]

第四章表达式 [sizeof&强制类型转换]


sizeof运算符:
当使用sizeof运算符时将不会计算表达式值,而会返回表达式类型大小。如果目标类型是函数则返回函数表达式大小。
如果是数组时,则返回数组总大小。如果是结构体则为结构体成员大小总和(不考虑对齐问题)。


cout << sizeof(1) << endl;
int a[] = {1,2,3};
cout << sizeof(a) << endl; // 12
int *p = a;
cout << sizeof(p) << endl; // 4



const_cast运算符:
用于加上或者去掉const属性进行与非常量间赋值。此操作符只能转换指针或者引用。


int i = 1;
int *p = &i;
const int *f = const_cast<const int*>(p); //加上const
*p = 23; // ok
*f = 23; // err


const int g = 1;
int *h = const_cast<int*>(&g);  // 去掉const
*h = 2; // ok
g =2; // err



static_cast运算符:
相当于C语言的强制类型转换。


复制代码

char a = 'a';
int b = static_cast<char>(a);// ok

int i = 1;
const int f = static_cast<const int>(i); // ok

const int g = 2;
int *h = static_cast<int*>(&g); // err 不能转换g去掉const



reinterpret_cast&&dynamic_cast:

没看懂,涉及后面知识之后补充。

运算符优先级:

括号成员第一; //括号运算符 成员运算符. ->

全体单目第二; //所有的单目运算符比如++、 --、 +(正)、 -(负) 、指针运算*、&乘除余三,加减四; //这个"余"是指取余运算即%

移位五,关系六; //移位运算符:<< >> ,关系:> < >= <= 等

等于(与)不等排第七; //即== 和!=

位与异或和位或; //这几个都是位运算: 位与(&)异或(^)位或(|)

"三分天下"八九十;

逻辑或跟与; //逻辑运算符:|| 和 &&

十二和十一; //注意顺序:优先级(||) 底于 优先级(&&)

条件高于赋值, //三目运算符优先级排到13 位只比赋值运算符和","高

逗号运算级最低! //逗号运算符优先级最低

以上口诀以及详细优先级列表请见 CSDN-稚枭天卓

第四章细碎内容过多,暂且整理这些。

禽兽一只:《C++ Primer》从入门到放弃zhuanlan.zhihu.com图标

编辑于 2018-06-12