Multiple Counter Problem In For Loop

后端 未结 7 1126
余生分开走
余生分开走 2020-12-16 10:59

Why is this not valid

for( int i = 0, int x = 0; some condition; ++i, ++x )

and this is

int i, x;
for( i = 0, x = 0; some c         


        
相关标签:
7条回答
  • 2020-12-16 11:32

    when you need to declare two variables of different types, it can't be done by one declaration

    Hackety hack hack:

    for (struct {int i; char c;} loop = {0, 'a'}; loop.i < 26; ++loop.i, ++loop.c)
    {
        std::cout << loop.c << '\n';
    }
    

    ;-)

    0 讨论(0)
  • 2020-12-16 11:32

    Correct version is

    for (int i = 0, x = 0; some condition; ++i, ++x)
    
    0 讨论(0)
  • 2020-12-16 11:37

    this works:

    for( int i = 0, x = 0; some condition; ++i, ++x )
    

    it's a variable declaration:

    int i, j; // correct
    int i, int j; // wrong, must not repeat type
    
    0 讨论(0)
  • 2020-12-16 11:42

    I implemented this approach to calculate the diagonal difference. Here I am calculating the sum of Antidiagonal.

     for(int i=0,j=n-1; i<n,j>=0;i++,j--){
        sum_right += a[i][j];
      }
    
    0 讨论(0)
  • 2020-12-16 11:50

    Why should it be valid? It is a syntactically meaningless construst. What were you trying to say with it?

    The first part of for header is a declaration. The

    int i = 0, int x = 0
    

    is not a valid declaration. It will not compile in for for the same reason why it won't compile anywhere else in the program

    int i = 0, int x = 0; // Syntax error
    

    When you need to declare two objects of type int in one declaration, you do it as follows

    int i = 0, x = 0; // OK
    

    The same thing can be used in for

    for( int i = 0, x = 0; some condition; ++i, ++x )  
    

    (But when you need to declare two variables of different types, it can't be done by one declaration and, therefore, both cannot be declared in for at the same time. At least one of them will have to be declared before for.)

    0 讨论(0)
  • 2020-12-16 11:50

    Because a variable declaration (like int x) is not an expression and the comma operator (,) only combines expressions.

    0 讨论(0)
提交回复
热议问题