EXC_BAD_ACCESS错误C初学者程序



我正在学习C,当我将教程代码复制到Xcode中时,它就可以工作了。我试着写我自己的简单I/O。该程序的目标是要求输入每个变量a, b, c等。当我试图运行代码时,终端会说(11db(,然后我会得到EXC_BAD_ACCESS错误,并警告说%转换比数据参数多。不确定问题出在哪里,因为我输入的代码与教程中使用的代码几乎相同。我使用了int变量,因为这个想法是1+2+3。我尝试在printfscanf函数之前和之后放置sum = a + b + c,但都不起作用。我不知道是什么导致了这种情况的发生。我确实注意到在我的反馈窗口

a (int) 33234 b = (int) 32766 c = (int) -272632304 sum = (int) 0

我不确定bc是如何填充的,因为它在第一个数据输入后停止。感谢您的帮助。


教程代码:

#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字节作为结束标记。这很重要,但不是今天的课程。(

最新更新