【发布时间】:2012-08-17 06:04:49
【问题描述】:
假设我们有类似的东西
int f(int n);
....
do{
int a = b;
int b = f(a);
}
这样说有风险吗
do{
int b = f(b);
}
相反,假设 a 没有在其他地方使用?做前者在风格上会更可取吗?
【问题讨论】:
-
我个人不喜欢这两种方法,因为它会从更高的范围隐藏变量,这会使代码更难以理解/遵循,尽管这只是我的意见.. . 除了你的 gtg。
-
我不确定我理解为什么会出现变量阴影。
-
do {} 块中的 b 与块外的 b 不同。事实上,你并没有像你的问题所假设的那样“改变”任何东西。
-
你不能真正在同一个块中定义相同的变量,你会得到
previous definition of我也不认为第二个有效,因为编译器会尝试使用变量只是定义了哪个可能包含垃圾,无论哪种方式都不要隐藏,但如果你必须使用第一个,第二个就不会按预期工作。 -
我认为这个问题被误解了。我将其解读为块可以如何实现的两个独立且相互排斥的变体,问题是后一种形式是否存在任何固有风险和/或风格问题。
标签: c variables coding-style in-place