在开始分享这个看似“运算符”之前,先来看一段普通的不能再普通的代码:
#include <stdio.h>
int main()
{
int x = 10;
while( x --> 0 ) // x goes to 0
{
printf("%d ", x);
}
return 0;
}
这段代码的运行结果是怎样的呢?
这里推荐一款在线编辑器WandBox,点击下面链接即可进入在线编辑器网站编译运行上面的代码
https://wandbox.org/
上面程序运行的结果是:
似乎有点像数学中我们描述某个参数趋向于某个值的时候使用的“—> ”(好吧,是否还记得高等数学过的那几个很重要的极限公式,反正我是没记住)
但这是一个C/C++的运算符吗?
显然在C/C++标准中是没有–>运算符的,其实这条语句可以等效转换为下面的格式:
也就是说- -> 其实是两个独立的运算符组合在一起的结果,即首先x经过- -进行自减操作,再通过>与0进行比较
所以下面这几个组合型的“运算符”也是正常可以使用的
- -> | x- ->0 |
---|---|
++> | x++>0 |
- ->= | x- ->=0 |
++>= | x++>=0 |
此外我们可以再加上换行符,是不是感觉代码已经快变成画啦
代码还是要按照正常套路来写的
最后来复习一下运算符的优先级和结合性(下表各个运算符以优先级的降序从上至下列出)
文中相关链接
https://wandbox.org
https://zh.cppreference.com/w/cpp/language/operator_precedence
https://stackoverflow.com/questions/1642028/what-is-the-operator-in-c
https://groups.google.com/forum/#!msg/comp.lang.c++.moderated/VRhp2vEaheU/IN1YDXhz8TMJ