当前位置:  开发笔记 > 编程语言 > 正文

怎么了带有多个参数的static_cast?

如何解决《怎么了带有多个参数的static_cast?》经验,为你挑选了1个好方法。

任何人都可以告诉我这个演员有什么效果(除了设置happyNumber到1337),如果有的话,如果没有其他效果,我怎么能写这样的代码?这是编译器错误,还是C++的一些"隐藏功能"?

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

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

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



1> Todd Gamblin..:

静态强制转换采用一个参数,但其参数是一个表达式,表达式可以包含逗号运算符.逗号用于您想要同时评估两个或更多表达式的副作用,例如:

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

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

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有