我对C编程很新,所以我想我会尝试编写一个简单的程序
打印两个int
个数字。我提示用户输入两个号码,然后使用printf
但是,在运行程序时,我得到的结果非常奇怪。
例如......
Enter first int: 5
Enter second int: 3
First int: 2130567168
Second int: 2686756
我的代码如下......
#include <stdio.h>
int main()
{
int x, y;
printf("Enter first number: ");
scanf("%i", x);
printf("Enter second number: ");
scanf("%i", y);
printf("%i\n%i%\n",x,y);
return 0;
}
答案 0 :(得分:5)
这是因为您忘记了scanf声明中的&
。所以改成它:
scanf("%i", &y);
scanf("%i", &x);
//^ See here
你的printf语句中也有一个%
太多了。由于%
适用于format specifiers,因此如果您要打印符号%
,则必须将其写入2次:
printf("%i\n%i%\n",x,y);
//^ Is a format specifier so if you want to print the symbol, write it 2 times
旁注:
如果在scanf语句中使用说明符%i
并输入如下内容:035
,则输出将变为29
,因为它将被解释为八进制数。因此,如果您不希望这样,您可以将说明符更改为%d
,035
变为35
答案 1 :(得分:2)
像这样更改代码。
scanf("%i", &y);
scanf("%i", &x);
在将值存储到变量时,您必须提供该变量的地址。如果您使用的是阵列,则无需提供。在printf语句中,使用所需的说明符。
printf("%i\n%i\n",x,y);
答案 2 :(得分:2)
你忘记了&#39;&amp;&#39;在scanf语句中:
scanf("%i", &y);
scanf("%i", &x);
//^ this