语法
]
C++ 不存在的运算符~
趋向运算符
-->
在 while
中使用,表示趋向。
i=4
while(i-->0)cout<<i<<' ';
输出为 3 2 1 0
。
当然这个运算符可以反着写,令人震撼的是还可以加长写甚至跨行写。
while(0<--i)cout<<i<<' ';
while(0<----i)cout<<i<<' ';
while(i--\
\
\
>0)cout<<i<<' ';
full 字面量
C++ 有个 full
字面量,不需要导入任何库,是对十六进制数使用的。
full
的意思是满,这里,满的意思就是 $\times16+15$。比如说 0x3
的值是 $3$,而 0x3'full
的值就是 $3\times16+15=63$。
远大于
物理学中经常使用 $M\gg m$ 表示 $M$ 远大于 $m$。
实际上 C++ 也是有远大于运算符的,a>>b
是个比较运算符,表示判断 $a$ 的值是否远大于 $b$ 的值。
什么叫远大于呢?C++ 认为,如果 $a\ge2^b$,那么 a>>b
的值为真。
蝌蚪运算符
有的时候,我们想写一个值 $+1$ 后的值但不想改变这个变量,那么就有可能要写括号,比如 (x+1)/2
。
运用蝌蚪运算符可以简化表达式,比如上述就可以写成 -~x/2
。
类似的,(x-1)/2
可以写成 ~-x/2
。
两个方向容易记反怎么办?其实如果把 ~
当成蝌蚪的头,如果 ~
在后面表示游入,对应加;如果 ~
在前面表示游出,对应减。生动形象,这也是这个运算符得名的原因。
网页标记
C++ 允许你在程序中直接写网站,不加任何注释。
https://oeis.org/A000045
int a[50];
a[0]=0;a[1]=1;
for(int i=2;i<20;i++)
a[i]=a[i-2]+a[i-1];
代码高亮是不是泄漏天机了啊
字符串隐转整型
C++ 看似不支持字符串隐转整型,其实早就偷偷实现了,甚至还支持指数运算!
puts("-0.5"+1);
cout<<50**"2"<<'\n';
输出结果完全正确
0.5
2500