gpt4 book ai didi

c++ - 这个 bool 表达式是如何计算的?

转载 作者:行者123 更新时间:2023-11-30 01:16:18 26 4
gpt4 key购买 nike

在 C++ 中,让以下构造:

template<typename ValueType>
ValueType * func(Foo * foo)
{
Bar bar;
return foo && typeid(foo) == typeid(ValueType) ? &static_cast<ValueType*>bar : 0;
}

返回语句是如何计算的?像这样?

if ((bar && typeid(bar)) == typeid(ValueType))
return &static_cast<ValueType*>bar
return false;

最佳答案

foo && typeid(foo) == typeid(ValueType) ? &static_cast<ValueType*>bar : 0;

...在 static_cast<> 后用括号更正, 被评估为...

(foo && (typeid(foo) == typeid(ValueType))) ? (&(static_cast<ValueType*>(bar))) : 0;

列出了优先规则here .请注意 ?:三元运算符在此列表中的优先级为 15 - 低于您使用的其他运算符,因此它定义了评估的外部结构。 &&在 13 点以下 ==在 9。(我不认为这些数字在标准中的任何地方使用,但它们是用于指出 cppreference 表中内容的方便引用)。

关于c++ - 这个 bool 表达式是如何计算的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26900688/

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