关于if... else if...的一个问题

来源:百度知道 编辑:UC知道 时间:2024/05/06 03:58:16
{
int i,j,strl;
for (i=0;i<50;i++)
{
strl=strlen(xx[i]);
for (j=0;j<strl;j++)
{
if (xx[i][j]<='z' && xx[i][j]>'a')
xx[i][j]=xx[i][j]-1;
else if (xx[i][j]=='a')
xx[i][j]='z';
}
}
}



{
int i,j,strl;
for (i=0;i<50;i++)
{
strl=strlen(xx[i]);
for (j=0;j<strl;j++)
{
if (xx[i][j]<='z' && xx[i][j]>'a')
xx[i][j]=xx[i][j]-1;
if (xx[i][j]=='a')
xx[i][j]='z';
}
}
}

上面两个就是差个else,为什么结果不同呢....我知道if... else if...和if... if...的区别是if... else if...如果if成立就不考虑else if ...而if... if...则是独立考虑的。
但是我的程序里,if if 后面跟的两个语句是完全矛盾的,一个对了另一个一定不对的呀,为什么会不一样呢?

谢谢

问题在于
当x[i][j]=='b'时,
则xx[i][j]-1=='a'
if...else if 当if成立时候不会去判断else if

而你if if则2个if都要判断 而你第一个if在我所说的情况下 会使得第二个if成立

语法错了,或者叫逻辑判断错了。

程序执行时,两个独立的if,按if语句的次序,都要进入条件判断,任何一句满足条件,就要执行里面的语句。前一个 xx[i][j]=xx[i][j]-1; 改变了xx[i][j],下一句的条件判断按新的 xx[i][j] 值考虑。

if... else ,满足前一个条件就不判断后面 else if 的条件,也就不会执行后面的else if 里的语句。