相关疑难解决方法(0)

在C++中为什么我不能像这样编写for()循环:for(int i = 1,double i2 = 0;

或者,"在for循环中声明多个变量是禁止的"?

我的原始代码是

 for( int i = 1, int i2 = 1; 
      i2 < mid;
      i++, i2 = i * i ) {
Run Code Online (Sandbox Code Playgroud)

我想循环通过第一个这么多的正方形,并且想要数字和它的正方形,并且停止条件取决于正方形.这段代码似乎是意图的最干净的表达,但它无效.我可以想到十几种解决这个问题的方法,所以我不是在寻找最好的选择,而是为了更深入地理解为什么这是无效的.一点语言律师,如果你愿意的话.

我已经足够记住你必须在函数开始时声明所有变量,所以我很感激

for( int i = 0; ....
Run Code Online (Sandbox Code Playgroud)

句法.阅读它看起来好像你只能在for()语句的第一部分中有一个类型声明.所以你可以做到

for( int i=0, j=0; ...
Run Code Online (Sandbox Code Playgroud)

甚至略有巴洛克风格

for( int i=0, *j=&i; ...
Run Code Online (Sandbox Code Playgroud)

但不是我明智的

for( int i=0, double x=0.0; ...
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么?这是for()的限制吗?或者对逗号列表的限制,比如"逗号列表的第一个元素可以声明一个类型,但不能声明另一个?"下面使用逗号来区分C++的不同语法元素吗?

(一个)

for( int i=0, j=0; ...
Run Code Online (Sandbox Code Playgroud)

(B)

int i = 0, j = 0;
Run Code Online (Sandbox Code Playgroud)

(C)

 int z;
 z = 1, 3, 4;
Run Code Online (Sandbox Code Playgroud)

那里有专家吗?

================================================== ==

根据我得到的好反应,我想我可以提出这个问题:

在for语句中

for( X; Y; …
Run Code Online (Sandbox Code Playgroud)

c++ loops

21
推荐指数
3
解决办法
6024
查看次数

为什么用C循环变量在C++中编写for循环是如此"难"?

可能重复:
在C++中为什么我不能像这样编写for()循环:for(int i = 1,double i2 = 0; ...

AC开发人员会这样写:

int myIndex;
for (myIndex=0;myIndex<10;++myIndex) ...
Run Code Online (Sandbox Code Playgroud)

C++开发人员会编写这个来防止循环变量泄漏到循环外:

for (int myIndex=0;myIndex<10;++myIndex) ...
Run Code Online (Sandbox Code Playgroud)

但是,如果您有2个循环变量,则不能再执行此操作.以下内容无法编译:

for (int myIndex=0,MyElement *ptr=Pool->First;ptr;++myIndex,ptr=ptr->next) ...
Run Code Online (Sandbox Code Playgroud)

逗号运算符不允许以这种方式定义两个变量,因此我们必须这样写:

int myIndex;
MyElement *ptr;
for (myIndex=0,ptr=Pool->First;ptr;++myIndex,ptr=ptr->next) ...
Run Code Online (Sandbox Code Playgroud)

这打破了拥有真正的循环局部变量的优势.

一个解决方案可能是将整个结构放在大括号之间,如下所示:

{
int myIndex;
MyElement *ptr;
for (myIndex=0,ptr=Pool->First;ptr;++myIndex,ptr=ptr->next) ...
}
Run Code Online (Sandbox Code Playgroud)

但这并不是更优雅.

在C++(或C++ 0x)中有没有更好的方法呢?

c++ c++11

16
推荐指数
2
解决办法
1279
查看次数

为什么这个for循环不正确?

Visual Studio告诉我这个for循环不正确.错误消息是:

  • 键入bool意外
  • ok是未声明的标识符
  • 失踪 ; 之前}

相关信息:

-recordset.Select返回一个long -MoveNext bool

for (size_t i = 0, bool ok = recordset.Select(Adress::getSQLStatement() + "Where A05.recid = %ld", i); ok; ok = recordset.MoveNext(), i++) {
    at(i).Save(recordset);
}
Run Code Online (Sandbox Code Playgroud)

c++ for-loop

4
推荐指数
1
解决办法
127
查看次数

标签 统计

c++ ×3

c++11 ×1

for-loop ×1

loops ×1