我可以在for循环的初始化中声明不同类型的变量吗?
Can I declare variables of different types in the initialization of a for loop?
为什么这个c++代码不能在VS2010下编译:
for ( int a = 0, short b = 0; a < 10; ++a, ++b ) {}
而这个
short b = 0;
for ( int a = 0; a < 10; ++a, ++b ) {}
禁止在for循环初始化器中声明两个不同类型的变量吗?如果是这样,你该如何解决这个问题?
是的,这是被禁止的。就像你不能在一个声明语句中声明不同类型的变量一样(edit:对@MrLister提到的声明器修饰符取模)。你可以声明structs
for (struct { int a = 0; short b = 0; } d; d.a < 10; ++d.a, ++d.b ) {}
c++ 03代码:for (struct { int a; short b; } d = { 0, 0 }; d.a < 10; ++d.a, ++d.b ) {}
当然,当所有初始化项都是0
时,您可以完全省略初始化项而写成= { }
。
与for
循环无关。如果您在任何循环之外编写int a = 0, short b = 0;
,这也不会编译。
所以答案是:总是禁止在一条语句中声明两个不同类型的变量。
嗯,这让我思考。在32位环境中,指针将是4字节,就像int一样,所以你可以使用short a = 0, *b = 0;然后将b转换为整型。嗯…
禁止像int a = 0, short ...
如果你想使用这种符号,那么两个变量必须具有相同的类型int i = 0, s = 0;
for语句只能声明一种类型。所以第二个代码是可用的
不能将变量声明为for
的while
条件(同步步骤)。
for ( a = 0, short b = 0; a < 10; ++a, ++b ) {}
都不行
相关文章:
- 从模板创建通用打印函数,以打印基元数据类型变量的值
- 指针数据类型变量如何包含对象?
- 将 static_cast<int>(-15) 分配给静态常量字符类型变量
- 将内置类型变量传递给只有一个类类型参数的"+"运算符函数时自动类型转换的构造函数
- 如何为结构类型变量赋值
- 如何将字符类型变量附加到字符串中?
- 共享或私有 openmp 代码中的结构化类型变量
- 有没有办法在 c++ 中制作类型变量?
- 从其他类声明类类型变量会给出 C2143 错误(在"*"之前缺少";")
- 如何检查类中定义的枚举类型变量是否被分配给?
- 将子类实例保存在父类型变量中并通过父变量使用 Child 函数?
- 是否可以在没有结构的情况下创建新的类型变量?
- 为什么类型变量;不调用默认 CTR
- 如何使用CIN将输入整数值获取到char类型变量中
- 如何为 char** 类型变量提供适当的值,以便将其分配给字符串变量
- 在C++标准中哪里说必须初始化 const 内置类型变量的定义
- 为什么可以将其他类型变量用作C 中常量参考参数参数的参数
- Eclipse CDT 打开声明的自动类型变量
- 如何计算长长类型变量中的位数
- 将自动类型变量初始化为零.这种类型安全吗?