2016-12-16 4 views
-8

Почему программа дает мне другой результат, когда я использую оператор if.Почему программа дает мне другой результат, когда я использую оператор

Если я использую команду else if, она печатает 5. Однако. Если я изменил else, если на оператор if, он напечатает совершенно другую картинку. Может ли кто-нибудь сказать мне, почему?

#include<iostream> 
using namespace std; 

// Print 5. 
int main() { 
int n=5; 
for(int row=1;row<=2*n-1;row++)  
    { 
    for(int col=1;col<=n;col++) 
    { 
    if(row==1||row==n||row==2*n-1) 
    cout<<"*"; 
    else if (col==1&&row<n||col==n&&row>n) 
    cout<<"*"; 
    else 
    cout<<" "; 
    } 
cout<<endl; 
} 
return 0; 
} 

Я всегда думал, что если и еще, если они одинаковы.

+2

в 'еще if' на' if' оценивается только когда закрывающее условие 'if' ложно ... Оно меняет вещь s использовать одну форму или другую ... 'if (c1) {} else if (c2) {}' эквивалентно 'if (c1) {}, если (! c1 && c2) {}'. –

ответ

0

В заявлении if else-if вы задаете несколько условий для оценки результата.

Ниже показано, как операторы будут работать в вашем случае:

if(row==1||row==n||row==2*n-1) 
cout<<"*"; //if true then put * or if false then move down 
else if (col==1&&row<n||col==n&&row>n) 
cout<<"*"; // if the first is false and the 2nd one is true then put * or if false then move down 
else 
cout<<" "; // if both of the above statements are not true put whitespace 

Я надеюсь, что это помогает.

Update: (с замечания ФПА в)

if(row==1||row==n||row==2*n-1) 
cout<<"*"; // if the above is true then show * 
else 
cout<<" "; // else show whitespace 

if (col==1&&row<n||col==n&&row>n) 
cout<<"*"; // if the above is true show * 
else 
cout<<" "; // else show whitespace 

В этом коде первые и вторые заявления работают независимо друг от друга, и нет ничего, связанное с ними. Если первая истинна или ложна, это не имеет значения для второго и наоборот.

Кроме того, вы можете опустить заявление else, если оно вам не нужно.

if (col==1&&row<n||col==n&&row>n) 
cout<<"*"; // if the above is true show * 
// here else will not show whitespace because it is omitted 
+0

Не могли бы вы показать мне, что произошло бы, если бы я изменил иначе, если на утверждение if? – Shawn99

+0

Я обновил свой ответ, вы можете посмотреть. Пожалуйста, отметьте это как ответ, если он вам поможет. – Ahmar

0

еще, если блок будет выполнять только если непосредственно перед «если» блок не выполняется. Например:

int a = 9; 
if (a==9)   //true and executed 
    cout<<"is 9"; 
else if(a<5)  //not executed since the if(a==9) block executed 
    cout<<"is less than 5"; 

выведет:

is 9 

Принимая во внимание:

int a = 9; 
if (a==9)   //true and executed 
    cout<<"is 9"; 
if (a<5)   //true and executed regardless of the previous if block 
    cout<<"is less than 5"; 

выведет:

is 9 
is less than 5 
Смежные вопросы