c++默认初始化
C++ default initialization
根据Stanley Lipmann的c++ Primer(第4版),在第50页上说:
"在函数体之外定义的变量初始化为0。"
根据我所读到的,这似乎不是真的。
全局char
默认为空,不为0。
感谢您的帮助。
Stanley是正确的—具有静态存储持续时间的对象在进行任何其他初始化之前进行零初始化。
因此,在您的术语中,全局char
"默认"为0
。这是整数0
,而不是字符'0'
(通常是48
)。当您尝试将其流式传输到控制台时,您将看不到任何内容,因为这个char
值没有人类可读的表示形式。
如果你指的是全局char*
或char const*
,那么这也是"默认的"0
,即它将是一个空指针。这是而不是,与指向空字符串的指针相同。尝试流式传输这将导致未定义的行为,所以你可能什么也看不见,或者你可以看到我妈妈的番茄汤配方以20赫兹的解释舞蹈的形式呈现在ASCII艺术翻译层后面。
都不会是"blank",尽管在不知道"blank"是什么意思的情况下,我不能绝对肯定地说。
试试这个:
#include <iostream>
char global;
int main()
{
std::cout << "Value of Global " << ((int)global) << "n";
}
global
在这里是一个静态存储时间对象,因此将被初始化为零。
我将它(非常惰性地)强制转换为一个整数,这样流将打印出它的值(而不是字符),只是为了显示它是零。
打印出字符' '不会打印任何有用的东西。
'0'
不是0
。当它声明初始化为0时,它表示值0
(也是