- 主题:局部变量有必要初始化为0吗
编译器对局部变量检查成本很低,默认会给初始化0吗
--
FROM 112.64.184.*
不会默认初始化为0
栈变量初始化需要用指令来实现,编译器没必要给你插入不需要的指令,搞大exe文件尺寸,也增大执行开销。
--
FROM 114.245.195.*
那为什么没产生告警,我都开了-Wall
【 在 z16166 的大作中提到: 】
: 不会默认初始化为0
: 栈变量初始化需要用指令来实现,编译器没必要给你插入不需要的指令,搞大exe文件尺寸,也增大执行开销。
--
FROM 112.64.184.*
你这属于让人摸不着头脑的问题
既没贴代码,也没说明你想要啥效果
【 在 freyoneby 的大作中提到: 】
: 那为什么没产生告警,我都开了-Wall
--
修改:z16166 FROM 114.245.195.*
FROM 114.245.195.*
好像debug 会初始化成0,不知道有没有一个具体的编译选项来控制。
【 在 z16166 的大作中提到: 】
: 不会默认初始化为0
: 栈变量初始化需要用指令来实现,编译器没必要给你插入不需要的指令,搞大exe文件尺寸,也增大执行开销。
--
FROM 183.8.129.*
你用了一个没有初始化的局部变量才会警告啊。
【 在 freyoneby 的大作中提到: 】
: 那为什么没产生告警,我都开了-Wall
--
FROM 183.8.129.*
#include <stdio.h>
#include <string.h>
int main(void)
{
char i[100];
memset(i,0,100);
printf("i1=%c",i[1]);
return 0;
}
~
【 在 z16166 的大作中提到: 】
: 你这属于让人摸不着头脑的问题
: 既没贴代码,也没说明你想要啥效果
:
--
FROM 112.64.184.*
上面的代码我发现不加memset就会告警,加了就没有,编译期这么智能?
【 在 freyoneby 的大作中提到: 】
: #include <stdio.h>
: #include <string.h>
: int main(void)
: ...................
--
FROM 112.64.184.*
不会。
【 在 freyoneby 的大作中提到: 】
: 编译器对局部变量检查成本很低,默认会给初始化0吗
--
FROM 221.221.51.*
不会,全局变量会
【 在 freyoneby 的大作中提到: 】
: 编译器对局部变量检查成本很低,默认会给初始化0吗
--
FROM 106.39.149.*