2013-05-21 62 views
1

我正在做這本書的教程:Neil Smyth編寫的「Objective-C 2.0 Essentials第3版」。我已經反覆嘗試,但即使書籍版本宣稱運行,仍然保持相同的「預期表達式」錯誤。我檢查了太多次,我的版本和書籍完全一樣。請,有人可以幫助我。代碼如下:期望的表達式錯誤 - Objective C

#import <Foundation/Foundation.h> 

int main (int argc, const char * argv[]) { 
    @autoreleasepool { 
     int x; 
     int j = 54321; 

     for (x = 0; x < 10; x++) { 

     } 

     int j = x + 10; 
     NSLog (@"Variable j in for loop is %i", j); 

     NSLog (@"Variable j outside for loop is %i", j); /* I GET AN ERROR STATING " EXPECTED EXPRESSION HERE*/ 

    } 
    return 0; 
} 

回答

1

更好地設置您的代碼;如果你在代碼中放錯位置的}變得很明顯:

#import <Foundation/Foundation.h> 
int main (int argc, const char * argv[]) { 
    @autoreleasepool { 
     int x; 
     int j = 54321; 
     for (x = 0; x < 10; x++) { 
      int j = x + 10; 
      NSLog (@"Variable j in for loop is %i", j); 
     } 
   NSLog (@"Variable j outside for loop is %i", j); 
    } 

    return 0; 
} 

編輯由@MartinR指出,不可見的字符也是一個問題(我沒有注意到)。所以你的代碼有兩個錯誤。

+0

+1我沒有看到一個缺少括號在OP的代碼,但我認爲你是正確的,有一個在實際的源缺失。 – Caleb

+0

@Caleb我原本以爲它失蹤了,但它是錯位的。答案的真正關鍵是格式化代碼,這使得這些錯誤更容易被看到。我希望原始問題沒有被修改,以突出這個問題。 – trojanfoe

+0

@Caleb我沒有進入「同一/新生產線上的支架」;縮進是我強調的唯一問題。 – trojanfoe

4

NSLog (@"Variable j outside for loop is %i", j); 

含有大量的選項卡和 「的NSLog」 之間不可見字符(UTF-8序列EF BF BC = OBJECT替換字符)。

刪除和重寫該行應該有所幫助。

OP的代碼在六編輯器中打開: enter image description here

+0

+1有趣。我沒有看到。 – trojanfoe

+0

添加了屏幕截圖,你的回答速度更快,而且我已經創建了它:) – Sulthan

+0

@trojanfoe:即使Xcode中的「顯示不可見」,字符也只顯示爲「零寬度」空間,因此很難注意。我所看到的是「NSLog」沒有語法着色。 –

相關問題