【发布时间】:2013-03-22 11:14:47
【问题描述】:
以下代码有效吗?如果有,x的范围是什么?
int main()
{
if (true) int x = 42;
}
我的直觉说if 没有创建范围,因为它后面没有实际的块 ({})。
【问题讨论】:
-
嗯,我的直觉是范围不依赖于存在的 {},或者换句话说,对于单个语句,{} 的存在是可选的。
-
它应该只存在于条件范围内,单个语句不需要
{}。 -
@NicholasSmith 但是你能证明吗?
-
@LightnessRacesinOrbit:因为我不一定想在真正的代码行上中断。例如,我可能想在
foo[i]==356时进入一个循环;添加两行代码去if (foo[i]==256) int spug=7;(它总是spug=7,我不知道为什么)让我在我想要的地方进入一个复杂的循环。
标签: c++ language-lawyer