为了账号安全,请及时绑定邮箱和手机立即绑定

gcc是否会自动将静态变量初始化为零?

/ 猿问

gcc是否会自动将静态变量初始化为零?

C
慕的地8271018 2019-11-19 15:06:35

我有一个已声明但未在函数中初始化的静态变量。这个变量会自动初始化为零吗?


static int idx;


查看完整描述

3 回答

?
胡子哥哥

是的-C标准ISO / IEC 9899:1999又名C99(和C ++)标准说必须是这样。有关确切的文本,请参见WG14 N1256的6.7.8节(“初始化”)中的第10项。


正如其他人所指出的,始终初始化静态变量是一个好习惯:


static int idx = 0;

这样做的原因不是因为某些编译器可能并不总是将静态变量初始化为零(任何未能完成初始化的编译器都会被终止,并且不能声称是C或C ++编译器),而是要说些什么。您的意思是-可能是编程的最基本规则。


查看完整回答
反对 回复 2019-11-19
?
翻过高山走不出你

尽管标准说是...好习惯表明您应该始终初始化变量。您永远不知道何时更改编译器,或必须在另一台计算机上编译它,想要最大程度地减少潜在的意外行为。


查看完整回答
反对 回复 2019-11-19
?
犯罪嫌疑人X

ouble somethingImportant(){静态double arr [1024 * 1024]; ...}每个成员的显式初始化可能有点困难。如果您有标准的编译器,则按定义对其进行初始化。如果您不能依靠像在编译器上工作那样的基本知识,请选择另一个编译器,因为您将很难在任何代码上进行推理。

查看完整回答
反对 回复 2019-11-19

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信