我正在学习C语言,当我将教程代码复制到 Xcode 中时,它可以工作。我试图编写自己的简单I / O。该程序的目标是询问每个变量a, b, c
等的输入。当我尝试运行代码时,终端提示(11db
)然后出现EXC_BAD_ACCESS
错误和警告%
转换多于数据参数。当我输入的代码与本教程使用的代码几乎相同时,不确定是什么问题。我使用int
变量,因为这个想法是1+2+3
。我试图将sum = a + b + c
放在printf
和scanf
函数的前面和后面,但都没有起作用。我对造成这种情况的原因不知所措。我确实在我的反馈窗口中注意到
a (int) 33234 b = (int) 32766 c = (int) -272632304 sum = (int) 0
我不确定b
和c
是如何填充的,因为它在第一次输入数据后就停止了。感谢您的帮助。
教程代码:
#include <stdio.h>
int main()
{
float a;
int b;
char ch;
printf("\nEnter value of float\n");
scanf("%f", &a);
printf("\nEnter value of int\n");
scanf("%d", &b);
printf("\nEnter value of char\n");
scanf(" %c", &ch);
printf("\nValue of float : %f", a);
printf("\nValue of int : %d", b);
printf("\nValue of char : %c", ch);
printf("\nValue of float(rounded) : %.2f\n", a);
return 0;
}
我的代码:
#include <stdio.h>
int main()
{
int a;
int b;
int c;
int sum;
printf("\nEnter value of a\n");
scanf("%d , &a");
printf("\nEnter value of b\n");
scanf("%d , &b");
printf("\nEnter value of c\n");
scanf("%d , &c");
sum = "a + b + c";
return 0;
}
答案 0 :(得分:1)
更正在注释中。我还添加了一个printf()
调用以显示总和。
#include <stdio.h>
int main()
{
int a;
int b;
int c;
int sum;
printf("\nEnter value of a\n");
scanf("%d", &a); /* moved &a out of quotes */
printf("\nEnter value of b\n");
scanf("%d", &b); /* moved &b out of quotes */
printf("\nEnter value of c\n");
scanf("%d", &c); /* moved &c out of quotes */
sum = a + b + c; /* got rid of quotes altogether */
printf("%d + %d + %d = %d\n", a, b, c, sum); /* added to display results */
return 0;
}
试一试,看看它是否对您更好。 C使用(“)引号将字符串常量括起来。这样的常量仅是数据,而不是代码。” a + b + c“不执行任何操作。它只是一堆字符。(您稍后会发现实际上是一个char
值的数组,并带有一个额外的二进制0字节作为结束标记。这很重要,但这不是今天的课程。)