Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Двумерный массив


Автор: ZIFIR 25.4.2007, 13:55
Код

void Func(int matrix[4][4])
{
int  i, j, n;
for (i=0; i<=3; i++){
    for (j=0; j<=3; j++){
        n = matrix[i][j]; 
        if (n = 0) //здесь проходит мимо условия, даже если (n = matrix[i][j];) n=0
        {
           //Операторы
        }
    }
}

}

int main(int argc, char* argv[])
{
int matrix[4][4];
int i, j, sch=1;
for (i=0; i<=3; i++){
    for (j=0; j<=3; j++){
        if (sch == 16){
            matrix[i][j] = 0;} //Последнему элементу присваиваю 0
        else{
        matrix[i][j] = sch; 
        sch=sch + 1;}
    }
   
}
 Func(matrix);
return 0;
}


Если сделать так: if (n = 5), то условие принимается, даже если (n = matrix[i][j];) n = 1
Проверял в отладчике.

Автор: HappyLife 25.4.2007, 13:59
Код



void Func(int matrix[4][4])
{
int  i, j, n;
for (i=0; i<4; i++)
{
    for (j=0; j<4; j++)
   {
        n = matrix[i][j]; 
        if (n == 0) 
        {
           //Операторы
        }
   }
}
}
int main(int argc, char* argv[])
{
int matrix[4][4];
int i, j, sch=1;
for (i=0; i<=3; i++){
    for (j=0; j<=3; j++){
        if (sch == 16){
            matrix[i][j] = 0;
        }
        else
        {
           matrix[i][j] = sch; 
           ++sch;
        }
    }
   
}
 Func(matrix);
return 0;
}

Автор: Fazil6 26.4.2007, 08:46
Цитата(ZIFIR @  25.4.2007,  13:55 Найти цитируемый пост)
Если сделать так: if (n = 5)

это не проверка условия. Это присваивание
Код

if (n == 5)


Автор: BigHeart 26.4.2007, 23:21
не путай оператор присваивания(=) с оператором сравнения(==)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)