在 For 循环初始化中声明不同类型的变量
在 C 中,无法直接在 For 循环中声明不同类型的变量for 循环的初始化主体。这是因为循环初始化部分需要单个表达式,该表达式只能定义相同类型的变量。
考虑以下示例:
for (int i = 0, j = 0; ...) { // ... }
此代码正确定义了两个整数变量 i和 j。但是,如果您尝试在初始化中声明整数和字符,则会导致编译错误:
for (int i = 0, char c = 'a'; ...) { // ... }
技术解决方法
尽管不是在实际场景中建议,有一种技术解决方法可以在 for 循环初始化中声明不同的类型。它涉及创建一个包含所需类型的结构,然后使用该结构作为初始化表达式:
struct MyStruct { int a; char b; }; for (MyStruct s = { 0, 'a' }; s.a < 5; ++s.a) { std::cout << s.a << " " << s.b << std::endl; }
在此示例中,我们创建一个具有两个成员的 MyStruct,a(整数)和 b(一个字符)。循环初始化将 MyStruct 实例 s 设置为 a 等于 0,b 等于“a”。只要 s.a 小于 5,循环就会继续。
以上是可以在 C For 循环初始化中声明不同类型的变量吗?的详细内容。更多信息请关注PHP中文网其他相关文章!