例如,在以下代码中:
int myarray[3];
int x = myarray[1];
是否可以保证代码在恒定时间内成功执行并x
具有某些整数值?还是编译器可以完全跳过发射代码/发射代码以启动GNU Chess并仍然符合C ++标准?
这在类似于数组的数据结构中很有用,但可以在恒定时间内初始化。(抱歉,请不要随身携带Aho,Hopcroft和Ullman的副本,因此无法查找名字。)
这是未定义的行为。
根据标准([dcl.init]第12段),
如果未为对象指定初始化程序,则该对象将被默认初始化。当获得具有自动或动态存储持续时间的对象的存储时,该对象具有不确定的值,并且如果未对该对象执行初始化,则该对象将保留不确定的值,直到该值被替换为止...如果不确定的值为由评估产生的行为是不确定的,但以下情况除外
在以下所有情况下,都将解决对无符号窄字符类型或的访问std::byte
,这可能导致不确定的值而不是未定义的值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句