LINUX.ORG.RU

История изменений

Исправление Eddy_Em, (текущая версия) :

0 <= a < b <= 255

Если хочется 0 <= a <= b <= 255, то

// unsigned char a,b;
if(a > b) return;
unsigned char i = 0;
b++; 
do{
  …
  }while(++i != b); 
«Плохие точки»:

  1. a = b = 0
    unsigned char i = 0;
    b++; // b == 1
    do{
      …
      }while(++i != b); // 1 == 1 -> выходим
    
  2. a = b = 255
    unsigned char i = 255;
    b++; // b == 0
    do{
      …
      }while(++i != b); // 0 == 0 -> выходим
    
  3. другие варианты
    // a!=b
    unsigned char i = a;
    b++; // b == b+1, если b!=255, иначе b == 0
    do{
      …
      }while(++i != b); 
    
    если a == 0, b == 255, то первый while даст 1 != 0 когда i == 255, последний While даст 0 == 0 -> выход

Исправление Eddy_Em, :

0 <= a < b <= 255

Если хочется 0 <= a <= b <= 255, то

// unsigned char a,b;
if(a > b) return;
unsigned char i = 0;
b++; // b == 1
do{
  …
  }while(++i != b); // 1 == 1 -> выходим
«Плохие точки»:

  1. a = b = 0
    unsigned char i = 0;
    b++; // b == 1
    do{
      …
      }while(++i != b); // 1 == 1 -> выходим
    
  2. a = b = 255
    unsigned char i = 255;
    b++; // b == 0
    do{
      …
      }while(++i != b); // 0 == 0 -> выходим
    
  3. другие варианты
    // a!=b
    unsigned char i = a;
    b++; // b == b+1, если b!=255, иначе b == 0
    do{
      …
      }while(++i != b); 
    
    если a == 0, b == 255, то первый while даст 1 != 0 когда i == 255, последний While даст 0 == 0 -> выход

Исходная версия Eddy_Em, :

0 <= a < b <= 255

Если хочется 0 <= a <= b <= 255, то

// unsigned char a,b;
if(a > b) return;
unsigned char i = a;
if(b != 0) b--;
do{
  …
  }while(i++ <= b);
«Плохие точки»:

  1. a = b = 0
    unsigned char i = 0;
    b++; // b == 1
    do{
      …
      }while(++i != b); // 1 == 1 -> выходим
    
  2. a = b = 255
    unsigned char i = 255;
    b++; // b == 0
    do{
      …
      }while(++i != b); // 0 == 0 -> выходим
    
  3. другие варианты
    // a!=b
    unsigned char i = a;
    b++; // b == b+1, если b!=255, иначе b == 0
    do{
      …
      }while(++i != b); 
    
    если a == 0, b == 255, то первый while даст 1 != 0 когда i == 255, последний While даст 0 == 0 -> выход