对于许多问题,答案似乎可以在"标准"中找到.但是,我们在哪里找到它?最好是在线.
谷歌搜索有时会觉得徒劳,尤其是对于C标准,因为他们在编程论坛的大量讨论中被淹没.
要开始这个,因为这些是我现在正在搜索的,那里有很好的在线资源:
在你为什么不能声明while循环里面做的一个变量?OP询问为什么do-while循环的while-condition中的声明不在do语句的范围内.这将是非常不自然的,因为C/C++通常遵循"顶级声明"模式.但是相反的是 - 为什么不将do语句中的任何声明的范围扩展到while条件.这样就可以了
int i;
do {
i = get_data();
// whatever you want to do with i;
} while (i != 0);
Run Code Online (Sandbox Code Playgroud)
被缩短为
do {
int i = get_data();
// whatever you want to do with i;
} while (i != 0);
Run Code Online (Sandbox Code Playgroud)
它为限制控制变量的范围提供了一个整洁的语法.(注意:我知道这不是有效的语法 - 这就是问题的关键,为什么不扩展语言以允许这种语法.)
正如我在下面的评论中指出的那样,这个扩展不会破坏现有代码,并且非常符合引入for-init(和while-init)范围的精神.