根据标准(§3.3.3/ 4),N4567的标准禁止某些类型的重新声明先前在条件中声明的名称 - 如下:
在for-init-statement,for-range-declaration以及if,while,for和switch语句的条件中声明的名称是if,while,for或switch语句(包括受控语句)的本地名称,并且不得在该陈述的后续条件下,也不得在受控陈述的最外层(或if语句,任何最外层)中重新宣布; 见6.4.
但是,考虑到以下代码编译正常的事实,
int main(void) { if (int i=10) if (int i=20) ; return 0; }
我似乎不清楚究竟"该陈述的后续条件"是什么代表什么.