我的项目中的以下第三方代码收到 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/