你多久
必须编写一次如下代码?
x = (y + 1) % 10;
x = (y + 1) * (z - 1);
x = (wcslen(s) + 1) * sizeof(wchar_t);
因为+和-
符号的优先级
非常低,因此最终不得不
把它们括起来
,会导致大量难以阅读
的嵌套代码
.
VS2015
包含一对叫蝌蚪符号
的符号
.允许你在整数值
中无需括号
,加和减1
.
x = -~y % 10;
x = -~y * ~z;
x = -~wcslen(s) * sizeof(wchar_t);
它们叫做蝌蚪符号
,因为像一只游向或远离
值的蝌蚪
.波浪号~
是蝌蚪的头
,连符-
是尾巴.
语法 | 意义 | 解释 |
---|---|---|
-~y | y+1 | 蝌蚪游向 一个值会使它变大 |
~-y | y-1 | 蝌蚪游离 一个值会使它变小 |
要启用实验性蝌蚪符号
,请在C++
文件的顶部添加此行:
#define __ENABLE_EXPERIMENTAL_TADPOLE_OPERATORS
如,这里有个简单
程序来说明蝌蚪符号
.
#define __ENABLE_EXPERIMENTAL_TADPOLE_OPERATORS
#include <ios>
#include <iostream>
#include <istream>
int __cdecl main(int, char**)
{
int n = 3;
std::cout << "3 + 1 = " << -~n << std::endl;
std::cout << "(3 - 1) * (3 + 1) " << ~-n * -~n << std::endl;
return 0;
}