UB11
Definition⚓︎
The value of an object with automatic storage duration is used while the object has an indeterminate representation.
若一个具有自动储存期的对象在它没有确定的表示值时被使用,此时的行为是未定义的。
description⚓︎
自动储存期⚓︎
C语言的变量有两种生存期:静态存储期(static storage duration)和自动存储期(automatic storage duration)。
具有文件作用域的变量属于静态存储期,例如全局变量、函数等。属于静态存储期的变量在程序执行期间将一直占据存储空间,直到程序关闭才释放。
具有代码块作用域的变量一般情况下属于自动存储期。属于自动存储期的变量在代码块结束时将自动释放存储空间。
此处的未定义行为强调对象是自动存储期的,可联系全局变量定义时有默认赋值。
对象表示值⚓︎
可简单理解为内存中的01串。
表示值不确定最常见的情况是变量定义而未赋值。
code⚓︎
UB11.c
Configurations⚓︎
configuration1⚓︎
Dev-C++ TDM-GCC 4.9.2 64-bit Debug
configuration2⚓︎
Dev-C++ TDM-GCC 4.9.2 32-bit Debug
Behaviors⚓︎
configuration1⚓︎
Compilation successful
Output: 0
configuration2⚓︎
Compilation successful
Output: 36