c - 检查基元是否未初始化的简单方法?

标签 c methods conventions

在 C 中,据我所知,像 int 和 float 这样的基元在第一次声明时被初始化为 0。如果声明的结构包含原语,情况也是如此。我很难找到一种简单的方法来检查原语是否未初始化。

例如,假设我有一个在头文件中声明为 int 类型的实例变量。我需要在我的实现代码中使用这个变量,知道这个值是否已经初始化对我来说很重要。检查零并不是一个真正的选择,因为如果该值真的应该为零,那么我已经重新初始化了一个已经更改的值。检查 NULL 也不起作用,因为它不是指针。

我想出的唯一解决方案是将第一段可执行代码中的变量初始化为某个我知道永远不会与程序其余部分相关的值。例如,如果该值永远不应该低于零,那么我将它初始化为 -1 以知道它还没有被初始化。但这看起来确实很笨拙,并且如果可以为变量分配的值范围发生变化,可能会导致问题。

对这类问题有什么有趣的建议吗?提前致谢!

最佳答案

你的理解有误。无论是 int 还是 float,局部变量都未初始化。

只有 static 变量被初始化为零。您应该在使用前初始化所有内容。即使你觉得你的实现初始化了变量,你也不应该依赖它。该标准不保证任何事情。使用未初始化的变量是未定义的行为。

关于c - 检查基元是否未初始化的简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4645548/

相关文章:

c - 如何向 GCC 默认链接描述文件添加新的内存部分?

C++ 运算符与方法重载及其不同行为

c++ - 指针右侧的调用约定属性

带斜杠的资源的 REST 约定

c++ - 通过 C++ 中的非静态函数设置对 C 函数指针的回调

c - ncurses在Windows 8.1上编译时出现错误

java - 可以接受一个或两个参数但不能超过两个的函数

javascript - JavaScript 中有不同类型的数组吗?

c - 如何使用C计算二维数组中的行数

python - 从作为 python 脚本的 Linux 进程调用类方法