2013-02-27 146 views
-2

我寫了一些代碼,右對齊字符的字節中的所有位。 但是,應用程序被卡在一個循環中,因爲它永遠不會執行該行爲什麼while循環中的這條語句從未執行?

爲什麼會發生這種情況?

void rjustify(char thisChar) 
{ 
    unsigned char c = thisChar; 
    unsigned char positionmask = 1; 
    unsigned char insertionmask = 1; 
    while(positionmask) 
    { 
      if(c & positionmask) 
      { 
        c^=positionmask; 
        c|=insertionmask; 
        insertionmask<<=1; 
      } 
      positionmask<<1; //This line is never executed. 
    } 
    printf("%c", &c); 
} 
+0

哇,我是盲人。 – theIrishUser 2013-02-27 23:56:21

回答

4

當行被執行時,它不起作用。打開你的編譯器警告,更改爲:

positionmask <<= 1; 
2

執行它,它是一個空操作

positionmask < < = 1;

請注意:不要急於發表評論,否則會造成垃圾郵件。

3

您需要這樣做:positionmask <<= 1;改爲!

編譯器從不產生錯誤代碼。除非生成編譯器的編譯器有問題。