gpt4 book ai didi

c++ - 带有多个参数的 static_cast 是怎么回事?

转载 作者:可可西里 更新时间:2023-11-01 14:54:04 25 4
gpt4 key购买 nike

谁能告诉我这个转换有什么效果(除了将 happyNumber 设置为 1337),如果有的话,如果没有其他效果,我怎么能写这样的代码???这是编译器错误,还是 C++ 的某些“隐藏特性”?

int happyNumber = static_cast<int>(123.456, TRUE, "WTF" , false , "IS" , NULL , "GOING" , 0xff , "ON???" , 1337);

我很惊讶这会编译。我是通过一个 bug 发现它的,在这个 bug 中我不小心将第二个参数设置为要进入正在转换的表达式的函数调用中的参数。这导致了一个讨厌的错误,其中对象是从第二个参数转换而来的,调用函数时只有一个参数。它编译了……而且最初并没有繁荣……

我正在使用 Microsoft Visual C++ 2008。

最佳答案

静态转换接受一个参数,但它的参数是一个表达式,表达式可以包括comma operator。 .逗号用于您想要同时评估两个或多个表达式的副作用的情况,例如:

int i, j;
for (i=0, j=0; i < 10; i++,j++) {
// do stuff
}

它有点用处,因为没有它,您只能为 for 循环的初始化程序、条件和继续部分(或任何其他需要表达式的地方)计算一个表达式。但是,它通常不会产生最清晰的代码,而且语义很奇怪。如您所见,逗号分隔序列的计算结果为其最后一个表达式的值。

关于c++ - 带有多个参数的 static_cast 是怎么回事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/594135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com