c - 初始化一个int有什么副作用吗?

标签 c clang

我的项目中的以下第三方代码收到 clang 警告:

uLong x ;
int i;
int err;

err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i); d
x = (uLong)i; // <- CLANG: Assigned value is garbage or undefined

因此,为了摆脱这个错误,我想将 i 的初始化更改为:

int i = 0;

这会导致任何意想不到的后果吗?我想在不搞砸任何事情的情况下消除这个警告。

最佳答案

我想你可以把它改成int i = 0;

根据您的代码,最初 i 变量未初始化,因此它可能包含任意值,即垃圾。

我不知道,甚至编译器也不知道,函数 unzlocal_getByte 实际上会改变 i 变量的值,因此它会警告您可能存在不确定状态i 变量。

无论如何,预先初始化i变量不会使情况变得更糟。

关于c - 初始化一个int有什么副作用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14496059/

相关文章:

c++ - 删除的模板函数适用于 gcc,但不适用于 clang

c - C 函数定义参数列表中何时何地允许使用句点?

python - 无法访问显示组件 - 从 Windows 服务调用

c++ - Clang 格式将 if 语句主体拆分为多行

c++ - SIGFPE 访问 unordered_map 时

c++ - g++5 中 std::unordered_set 的不完整类型编译错误,在 clang++ 中编译

c++ - 捕获 lambda 表达式中的非类型模板参数

c - 如何使用结构体指针设置字符名称?

java - 当我没有传递此字符串时,会显示 09▀30≈ß#@÷g

C 编程获取用户信息