跳到主要内容
128 词数1 分钟

项目:C++ 冷知识

概述

几则有关 C++ 的冷知识:数组名与下标交换位置后仍能访问同一元素,因为下标运算会展开为指针加偏移;相邻字符串字面量会自动拼接;早期 IBM 键盘缺少中括号与大括号,由此留下对应的替代记号;do-while 循环中的减号与大于号也常被误读成趋近运算符。最后讨论有符号整数最小值取负仍等于自身的溢出现象。

一些有关 C++ 的冷知识。

数组下标​

i[a] 等价于 a[i]。

a[i] 等价于 *(a+i),而 i[a] 等价于 *(i+a)。

两者只是交换了加法顺序,结果是一样的。

字符串拼接​

字符串 "lailai""0916" 等价于 "lailai0916"。

细胞膜融合。

符号替换​

<::> 等价于 [],<%%> 等价于 {}。

早期 IBM 在计算机产业中的地位非常重要,但是它的键盘没有中括号和大括号按键。

所以在 C 语言中可以使用其他的组合符号代替,并且一直保留到现在。

趋近运算符​

45 Bcpp
int x=10;
do
{
cout<<x<<'\n';
}while(x-->0);

INT_MAX​

方程 −x=x-x=x 有两个解:

  • -0=0;
  • -(-2147483648)==(-2147483648)。