Re: C/C++ 语言新手十三诫 -- Ver. 2016

楼主: Hazukashiine (私は幸せです)   2016-06-09 04:27:41
※ 引述《wtchen (没有存在感的人)》之铭言: 问题点
: ^^^^^^
: 备注:
: 根据C Standard,拥有static storage duration的变量,
: 例如全域变量(global variable)或带有static修饰字者,
: 其初值(宣告的时候若是没有另外设初值的情况)为定值(最自然的初值就是0)。
: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^
可以改成:
  根据 C Standard,具有静态储存期的变量(e.g. 带有 static 修饰符者等),
  如果没有显式初始化的话,根据不同的资料型态予以进行以下初始化:
  若变量为算术型别 (int , double , ...) 时,初始化为零或正零。
  若变量为指标型别 (int*, double*, ...) 时,初始化为 null 指标。
  若变量为复合型别 (struct, double _Complex, ...) 时,递回初始化所有成员。
  若变量为联合型别 (union) 时,只有其中的第一个成员会被递回初始化。
虽然这好像有点太琐碎了,但是主要还是
  null 指标不一定是 0, 还有 union 不是所有成员都会被初始化的问题。
Reference: C99 standard (n1256): Section 6.7.8 Initialization (#10)
作者: wtchen (没有存在感的人)   2016-06-09 04:34:00
union有这种特性?我第一次知道不过C++11开始指标会初始成nullptr吗?union不会因为alignment初始所有成员吗?找到了,在C11 Standard 6.7.9有这rule不过如果是linux的情况,OS实作是把static摆BSS那应该就算是union也会是全都0windows我就不知了....已经修改好了,找资料的时候居然看漏了,感谢指正

Links booklink

Contact Us: admin [ a t ] ucptt.com