我正在学习C,当我将教程代码复制到Xcode中时,它就可以工作了。我试着写我自己的简单I/O。该程序的目标是要求输入每个变量a, b, c
等。当我试图运行代码时,终端会说(11db
(,然后我会得到EXC_BAD_ACCESS
错误,并警告说%
转换比数据参数多。不确定问题出在哪里,因为我输入的代码与教程中使用的代码几乎相同。我使用了int
变量,因为这个想法是1+2+3
。我尝试在printf
和scanf
函数之前和之后放置sum = a + b + c
,但都不起作用。我不知道是什么导致了这种情况的发生。我确实注意到在我的反馈窗口
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 floatn");
scanf("%f", &a);
printf("nEnter value of intn");
scanf("%d", &b);
printf("nEnter value of charn");
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) : %.2fn", a);
return 0;
}
我的代码:
#include <stdio.h>
int main()
{
int a;
int b;
int c;
int sum;
printf("nEnter value of an");
scanf("%d , &a");
printf("nEnter value of bn");
scanf("%d , &b");
printf("nEnter value of cn");
scanf("%d , &c");
sum = "a + b + c";
return 0;
}
注释中有更正。我还添加了一个printf()
调用来显示总和。
#include <stdio.h>
int main()
{
int a;
int b;
int c;
int sum;
printf("nEnter value of an");
scanf("%d", &a); /* moved &a out of quotes */
printf("nEnter value of bn");
scanf("%d", &b); /* moved &b out of quotes */
printf("nEnter value of cn");
scanf("%d", &c); /* moved &c out of quotes */
sum = a + b + c; /* got rid of quotes altogether */
printf("%d + %d + %d = %dn", a, b, c, sum); /* added to display results */
return 0;
}
试试看它是否对你更有效。C使用("(引号将字符串常量括起来。这样的常量只是数据,而不是代码。"a+b+C"什么都不做。它只是一堆字符。(稍后你会发现,这实际上是一个char
值的数组,带有一个额外的二进制0字节作为结束标记。这很重要,但不是今天的课程。(