2013-02-23 105 views
-2

我對Objective-C相對較新,我知道它是C的一個超集。但是當我嘗試在GCC中編譯這個C代碼時,它給了我一個錯誤,並且我不是能夠執行代碼。在Objective-C編譯器上編譯不正確的C程序

#include <stdio.h> 
    int main(){ 
    int x; 
    printf("Input int:\n"); 
    scanf("%d", x); 
    printf("%d", x); 
    return 0;    
} 

而當我做這個其他的代碼,沒有錯誤,但輸出是錯誤的。 注意:唯一的變化是「int * x」。

#include <stdio.h> 
    int main(){ 
    int *x; 
    printf("Input int:\n"); 
    scanf("%d", x); 
    printf("%d", x); 
    return 0;    
} 

    INPUT: 3 
    OUTPUT: 2147307520 
+5

這兩種語言都是錯誤的。 – 2013-02-23 03:01:13

回答

9

你需要在第一的整數分配空間,但你需要一個指針傳遞給scanf()在第二 - 排序;您需要將整數的地址傳遞給scanf()。你應該寫:

#include <stdio.h> 

int main(void) 
{ 
    int x; 
    printf("Input int:\n"); 
    scanf("%d", &x); 
    printf("%d\n", x); 
    return 0;    
} 

這是現在正在工作的C代碼;它也有可能成爲Objective C。在打印輸出結束時也包含換行符是一個好主意。