c - 如何在 C 中的 for (;;) 循环中声明多个变量?

标签 c loops for-loop declaration

我认为可以在 for 循环中声明多个变量:

for (int i = 0, char* ptr = bam; i < 10; i++) { ... }

但是我才发现这是不可能的。 GCC 给出以下错误:

error: expected unqualified-id before 'char'

真的不能在for循环中声明不同类型的变量吗?

最佳答案

您可以(但通常不应该)使用本地结构类型。

for ( struct { int i; char* ptr; } loopy = { 0, bam };
      loopy.i < 10 && * loopy.ptr != 0;
      ++ loopy.i, ++ loopy.ptr )
    { ... }

自 C++11 起,您可以更优雅地初始化各个部分,只要它们不依赖于局部变量即可:

for ( struct { int i = 0; std::string status; } loop;
      loop.status != "done"; ++ loop.i )
    { ... }

这几乎足以真正使用。


C++17 用 structured bindings 解决了这个问题:

for ( auto [ i, status ] = std::tuple{ 0, ""s }; status != "done"; ++ i )

关于c - 如何在 C 中的 for (;;) 循环中声明多个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3348766/

相关文章:

javascript - 基于数字渲染多个元素而不是通过数组映射

for-loop - julia 模块中的变量范围如何工作?

Python 2 - "For counting loop"

将字符串复制到结构体数组的元素

c - unix gcc 文件覆盖

c - C 语言中的多堆栈程序在一定数量的故意溢出和最顶层自动删除后显示不正确的元素

c - 如何检测最后一个额外的空行并在 C 中忽略它(使用 getc)

C语言: Write a program that would take 30 integers and prints the largest number and the smallest number

java - 以倒置直角形式打印奇数

for-loop - Go中使用 "continue Label"和使用 "break"跳出内循环的区别