【问题标题】:Declaring multiple types variables inside the init-expression of for statement [duplicate]在 for 语句的 init 表达式中声明多个类型变量 [重复]
【发布时间】:2014-02-01 17:05:52
【问题描述】:

在更复杂的for loops 中,我使用在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
  • 声明语句中的逗号没有按照您的想法执行,当然也不是在增量语句中执行的操作。前者分隔相同类型的 id。认为在 for 循环上下文外部执行此操作同样无效:int a=0, long x=1;
  • @WhozCraig 我知道,我什至在问题中说过自己。我想知道是否有办法声明不同类型的变量。

标签: c declaration


【解决方案1】:

其实可以。请参阅以下示例:

for(int i=0,j=1;i<=5,j<=5;i++,j++)

因为在条件语句中 i 和 j 用逗号分隔,因为 j 比 i 增加,所以只要 j 满足其条件,即达到计数 5,此循环将终止。因此,您需要注意第二个变量的条件。

【讨论】:

  • OP 知道他们可以在 for 循环中声明 2 个相同类型的变量。他们的问题是关于声明 2 个不同类型的变量,正如@hackks 所说,这是不可能的。
  • i
【解决方案2】:

你不能。一个简单的规则是,for 循环可以声明多个变量,前提是所有变量都具有相同的类型

【讨论】:

  • 这很可悲。 [评论填充]
  • 这叫做语言限制:)
  • @hacks 那是 C 标准参考吗?如果有,请提供该部分。
  • @FiddlingBits;标准对此并没有太多关注。但是有一个脚注只提到声明多个变量; 6.8.5.3:158) Thus, clause-1 specifies initialization for the loop, possibly declaring one or more variables for use in the loop;。但正如@WhozCarig 在他的评论中所说,你不能声明像int a, char ch; 这样的变量,这在语法上是错误的,因为, 这里不是逗号运算符
猜你喜欢
  • 2010-11-16
  • 1970-01-01
  • 2014-08-26
  • 1970-01-01
  • 2015-06-29
  • 2014-03-08
  • 2015-06-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多