質問です

*str='A';
str[1]='B';
str[2]='C';
str[3]='D';
str[4]='N';
str[5]='V';
str[6]='X';
str[7]='Y';
str[8]='Z';
str[9]='\0';

 while(str[i]!='\0'){
  if(str[i]>='Y'||str[i]>='y'||str[i]>='7'){
   str[i]-=3;
   printf("-3しました\n");
  }else{
   str[i]+=3;
   printf("+3しました\n");}
   ++i;}
  printf("%s\n",str);

まず、strというchar型でサイズ10の配列をつくりそれぞれの要素にA-Zの適当な文字を入れて、最後に終端文字を入れます
次に終端文字が来るまでY(0x59)以上もしくは
y(0x79)以上もしくは7(0x37)以上なら配列要素を-3してそれ以外なら+3するプログラムを組みましたが、

数字(0x30-0x39)以外の判定が上手くいきません
何故でしょうか。