在更复杂的for loops
,我用声明for
内更是一个变量,如果它们被用于迭代初始化表达式内多种类型的变量,像:声明的for语句
for (int i = 0, j = size; i < j; ++i, --j)
最多直到最近我还以为它是一个for
语法,但是现在我知道int i = 0, j = size
被看作是一个声明,并且++i, ++j
被看作是由comma operator
分隔的两个表达式。这意味着我可以在for的init-expression
中只声明一种类型的变量。
如何申报更多类型的for statement
变量里面,是这样的:
for (int i = 0, auto it = v.begin(); ..; ..)
我知道我可以只申报for
以外的变量。这些例子是我刚刚提出的,所以也许他们没有道理,但我遇到了一些真实的例子,我认为在for statement
内声明更多变量似乎是逻辑。
@ShafikYaghmour;仍然变量具有相同的类型,即'loopy'。 – haccks
你的声明语句中的逗号并没有做你认为的事情,当然也不是它在增量声明中做的事情。前者分隔相同类型的ID。把它看作和for循环上下文*外*一样无效:'int a = 0,long x = 1;' – WhozCraig
@WhozCraig我知道,我甚至在自己的问题中说过。我想知道是否有办法声明不同类型的变量。 – bolov