2013-02-23 101 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。在打印输出结束时也包含换行符是一个好主意。