Ivan43 Asked:2021-11-17 22:17:30 +0000 UTC2021-11-17 22:17:30 +0000 UTC 2021-11-17 22:17:30 +0000 UTC 代码 [_=&*+[]{}](){}() 是什么意思? 772 int main(void) { [_=&*+[]{}](){}(); } 如何解密此代码? c++ 1 个回答 Voted Best Answer KoVadim 2021-11-17T22:28:17Z2021-11-17T22:28:17Z 让我们像这样重写它 ( // для красоты [ _ = &*+[]{} ](){} ) // для красоты (); // вызываем лямбду 现在一切都清楚了,除了方括号 - 的内容_ = &*+[]{}。这种语法出现了 14 个加号。这里下划线是变量的名称(令人惊讶)。而equals的右边是一个函数。加号是一个带有 lambda 的常规函数。好吧,星号和与号相互抵消。难以置信的?改写成这样 ( [ _ = &*+[]{} ](){std::cout << typeid(_).name();} ) (); 在 gcc 的情况下,您将看到PFvvE它的含义void (*)() 好吧,我上当了吗?
让我们像这样重写它
现在一切都清楚了,除了方括号 - 的内容
_ = &*+[]{}。这种语法出现了 14 个加号。这里下划线是变量的名称(令人惊讶)。而equals的右边是一个函数。加号是一个带有 lambda 的常规函数。好吧,星号和与号相互抵消。难以置信的?改写成这样在 gcc 的情况下,您将看到
PFvvE它的含义void (*)()好吧,我上当了吗?