gpt4 book ai didi

c++ - 未初始化变量与类型安全之间的联系

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:32:47 24 4
gpt4 key购买 nike

我想问一下为什么使用未初始化的变量被认为是非类型安全的?

我正在阅读本网站 C++ 书籍指南中的 Bjarne Stroustrup 的初学者书籍(使用 C++ 编程原理和实践)。

书中关于类型安全的部分是这样说的:

A program - or a part of a program - is type-safe when objects are used only according to the rules for their type. For example, using a variable before it has been initialized is not considered type-safe.

然后书中提供了如下代码作为例子:

 int main() {
double x; // we "forgot" to initialize
// the value of x is undefined

double y = x; // the value of y is undefined
double z = 2.0+x; // the meaning of + and the value of z are undefined
}

我知道一个没有初始化的局部变量会有一个不确定的值和读取此变量将导致未定义的行为。我不明白的是它如何与类型安全相关联。我们仍然从变量的定义中知道类型。

为什么上面代码中的注释说2.0和x都是double时+的意义是未定义的,而+是为double + double定义的?

最佳答案

Undefined behavior意味着输出可能是您所期望的或某些不确定值,可能超出类型的有效范围

未定义行为的一个明显例子是 signed integer overflow :

unsigned int i;   // uninitialized
int x = i + 2; // indeterminate value
if (x + 1 > x) {} // undefined behavior due to signed overflow
如果 i 的最大值为 unsigned int,则

x 的值可以超出 int 有效范围。

因此,不能保证具有不确定值的表达式的类型安全。

关于c++ - 未初始化变量与类型安全之间的联系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51002033/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com