What & How & Why

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
cs:programming:cpp:courses:cpp_basic_deep:chpt_4 [2024/10/03 05:42] – [成员访问操作符] codingharecs:programming:cpp:courses:cpp_basic_deep:chpt_4 [2024/10/03 06:03] (当前版本) – [sizeof] codinghare
行 380: 行 380:
 int score = 100; int score = 100;
 int res = (score > 0) ? 1: (score == 0) ? 0:-1; int res = (score > 0) ? 1: (score == 0) ? 0:-1;
-<?code>+</code> 
 +==逗号操作符== 
 +  * 典型应用: 
 +    * for 循环中可以写出较为复杂的语句 
 +    * 元编程:折叠表达式,包展开 
 +  * 函数的参数表达式不是逗号操作符,参数列表求值顺序不定 
 +<code cpp> 
 +// 确保操作数从左向右求值 
 +// 求值结果为右算子 
 +2, 3; // result is 3 
 +// 左结合 
 +// (2, 3) , 4 
 +2, 3, 4; 
 +</code> 
 +==sizeof== 
 +  * 返回类型 / 对象 / 表达式返回值占用的字节数 
 +<code cpp> 
 +int x; 
 +// 推荐统一使用带括号的形式 
 +sizeof(int); 
 +sizeof(x); 
 +// 对表达式评估时,不会真正执行求值 
 +int* ptr = nullptr; 
 +// 等价 sizeof(int) 
 +sizeof(*ptr); 
 +</code> 
 +==域操作符== 
 +用于访问域内的变量 
 +<code cpp> 
 +int = x; 
 +namspace ABC 
 +
 +   int x; 
 +
 +int main() 
 +
 +   int x; 
 +   int y = x; // local 
 +   int y = ::x; // global 
 +   int y = ABC::x // ABC 
 +
 +</code> 
 +===C++17表达式求值顺序=== 
 +  * 之前的限定求值:逗号,三元条件,逻辑与 / 或(短路) 
 +  * C++17 新引入的限定 
 +<code cpp> 
 +// 先求 e1,再求 e2 
 +e1[e2]; 
 +e1.e2; 
 +e1.*e2; 
 +e1->*e2; 
 +e1<<e2; 
 +e1>>e2; 
 +e2=e1 / e2+=e1/ e2*=e1; 
 +</code> 
 +   * newType(e) 会先分配内存再求值