- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
为什么这段代码中的条件是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/
我正在尝试创建一个程序,其中字符串的前三个字符重复给定次数,如下所示: foo('Chocolate', 3) # => 'ChoChoCho' foo('Abc', 3) # => 'AbcAbcA
我有以下字符串: std::string str = "Mode:AAA:val:101:id:A1"; 我想分离一个位于 "val:" 和 ":id" 之间的子字符串,这是我的方法: std::st
DNA 字符串可以是任意长度,包含 5 个字母(A、T、G、C、N)的任意组合。 压缩包含 5 个字母(A、T、G、C、N)的 DNA 字母串的有效方法是什么?不是考虑每个字母表 3 位,我们可以使用
是否有一种使用 levenstein 距离将一个特定字符串与第二个较长字符串中的任何区域进行匹配的好方法? 例子: str1='aaaaa' str2='bbbbbbaabaabbbb' if str
使用 OAuth 并使用以下函数使用我们称为“foo”(实际上是 OAuth token )的字符串加密 key public function encrypt( $text ) { // a
我是一名优秀的程序员,十分优秀!