gpt4 book ai didi

c++ - 为什么空字符串文字被视为真?

转载 作者:IT老高 更新时间:2023-10-28 12:57:05 28 4
gpt4 key购买 nike

为什么这段代码中的条件是true

int main ( )
{

if ("")
cout << "hello"; // executes!

return 0;
}

最佳答案

如果条件的计算结果不是 0*,则该条件被视为“真”。 "" 是一个包含单个 \0 字符的 const char 数组。为了将此作为条件进行评估,编译器将数组“衰减”为 const char*。由于 const char[1] 不在地址 0 处,因此指针非零且满足条件。


* 更准确地说,如果它在被隐式转换为 bool 后计算结果为 true。对于简单类型,这相当于非零,但对于类类型,您必须考虑是否定义了 operator bool() 以及它的作用。

C++ 11 草案规范中的第 4.12 节:

4.12 Boolean conversions [conv.bool]

A prvalue of arithmetic, unscoped enumeration, pointer, or pointer to member type can beconverted to a prvalue of type bool. A zero value, null pointer value,or null member pointer value is converted to false; any other value isconverted to true. A prvalue of type std::nullptr_t can be convertedto a prvalue of type bool; the resulting value is false.

关于c++ - 为什么空字符串文字被视为真?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24530868/

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