显然,你可以在for循环中放置一个变量声明:
for (int i = 0; ...
我注意到你可以在if语句和switch语句中做相同的事情:
if ((int i = f()) != 0) ...
switch (int ch = stream.get()) ...
但是当我尝试在while循环中做同样的事情时:
while ((int ch = stream.get()) != -1) ...
编译器(VC++ 9.0)完全不喜欢它。
这符合规范行为吗?有什么原因吗?
编辑: 我发现我可以这样做:
while (int ch = stream.get() != -1) ...
但由于运算符优先级的原因,这会被解释为:
while (int ch = (stream.get() != -1)) ...
这并不是我想要的。
while
、if
和switch
可能是可行的。 - Mark K Cowanif
和switch
。另请参见 为什么没有“带初始化的while语句”? - manlio