if的小问题我懵逼了

#include
using namespace std;
int main() {
int n,ch;
cin>>n;
int a[n+5]= {0};
cout<<n<<endl;
for(int i=1; i<=n; i++) {
ch=a[i];
for(int j=1; j<=n; j++) {
if(a[j]==1) {
a[j]=0;
} else {
a[j]=1;
}
}
a[i]=ch;
for(int k=1; k<=n; k++) {
cout<<a[k];
}
cout<<endl;
}
return 0;
}

#include
using namespace std;
int main() {
int n,ch;
cin>>n;
int a[n+5]= {0};
cout<<n<<endl;
for(int i=1; i<=n; i++) {
ch=a[i];
for(int j=1; j<=n; j++) {
if(a[jj==0)a[j]=1;
if(a[jj==1)a[j]=0;
}
a[i]=ch;
for(int k=1; k<=n; k++) {
cout<<a[k];
}
cout<<endl;
}
return 0;
}

这俩if有啥区别吗我懵逼了

第一种的是else形式,只要条件不满足 就走else
第二种会一步一步下来

用if...else的话,要么if的代码块被执行,要么else的代码块被执行,只会执行一个,但也肯定会执行一个,无论if条件是什麽
用if...if的话,可能一个都不执行,可能执行一个,也可能执行两个。主要看if条件的满足情况

img


下面代码不管a[j]开始是0还是1最后都是0