首先你这个程序不知道是手误还是博客园出锅,是不能编译通过的(想想也不能)。我猜测ZERO=的后面应该有"[]",这样程序就变成了:
const int ZERO = [] {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
return 0;
}();
这是一个匿名函数(lambda表达式)。也就是说在没有声明的情况下直接定义函数内容。方括号和大括号是lambda的语法结构,而后面的小括号是函数调用。这个函数的返回值是0,所以ZERO也就是0。函数体里面执行的另外两行程序是将cincout等流输入输出和printf等C标准格式化输出脱离。如果你再主程序里尝试使用freopen和cincout,会发现freopen没有起作用。这是因为在主程序之前就已经执行了lambda中的内容,所以cincout不再受到freopen控制了。