在用C语言编写代码时,我遇到了以下情况。
int function ()
{
if (!somecondition) return false;
internalStructure *str1;
internalStructure *str2;
char *dataPointer;
float xyz;
/* do something here with the above local variables */
}
考虑到if
上面代码中的语句可以从函数返回,我可以在两个地方声明变量。
- 之前
if
陈述。
- 之后
if
陈述。
作为一名程序员,我会认为将变量声明保留在if
陈述。
报关地点需要收费吗?或者还有其他原因选择其中一种方式而不是另一种方式吗?
在 C99 及更高版本(或 C89 的常见一致扩展)中,您可以自由地混合语句和声明。
就像在早期版本中一样(随着编译器变得更智能、更积极,情况会更糟),编译器决定如何分配寄存器和堆栈,或者执行符合 as-if-rule 的任意数量的其他优化。
这意味着就性能而言,预计不会有任何差异。
Anyway,这不是允许这样做的原因:
这是为了限制范围,因此减少人们必须记住的背景在解释和验证您的代码时。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)