这似乎是一个简单的问题,但对我来说并不直观.
假设你有一个这样的循环:
int i;
for(i=0;i<10;i++){
float b = 25.2;
float c;
c=b+i;
}
Run Code Online (Sandbox Code Playgroud)
在每个循环中将b定义为float是否会产生任何负面影响?我认为它会有,但我不太确定,因为我看到的代码适用于此...
谢谢...
这是完全可以的,事实上,如果你只使用float循环内部,我认为在任何体面的编译器中都不重要.
将代码清晰度放入循环中确实有意义,但这主要是品味问题.
但要注意像这样的情况
int i,j;
for ( i=0;i<count;i++ )
{
int j;
// stuff
}
Run Code Online (Sandbox Code Playgroud)
我已经看到类似的情况不会生成编译器警告,这使得难以跟踪错误.
编辑刚测试,gcc编译方式不同,但-O3生成的程序集是相同的.测试用gcc -S file.c.更新:-O1已经足够了,它实际上取决于您声明变量的顺序.如果在您的示例中float声明如下int i;,则编译的程序集仍然是相同的.