Mar*_*tin 0 c++ unspecified-behavior
例如,在以下代码中:
int myarray[3];
int x = myarray[1];
Run Code Online (Sandbox Code Playgroud)
代码是否保证在恒定时间内成功执行,x具有一些整数值?或者编译器是否可以跳过为这个完全/发出代码发出代码来启动GNU Chess并仍然符合C++标准?
这在类似于数组的数据结构中很有用,但可以在恒定时间内初始化.(对不起,我没有Aho,Hopcroft和Ullman的副本,所以不能查找名字.)
这是未定义的行为.
根据标准([dcl.init]第12段),
如果没有为对象指定初始化程序,则默认初始化该对象.当获得具有自动或动态存储持续时间的对象的存储时,该对象具有不确定的值,并且如果没有对该对象执行初始化,则该对象保留不确定的值,直到替换该值...如果不确定的值是通过评估产生的行为是不确定的,除了以下情况
以下所有情况都解决了对无符号窄字符类型的访问,或者std::byte可能导致不确定的值而不是未定义的值.
| 归档时间: |
|
| 查看次数: |
181 次 |
| 最近记录: |