EXC_BAD_ACCESS错误C初学者程序

时间:2018-07-29 19:03:25

标签: c xcode

我正在学习C语言,当我将教程代码复制到 Xcode 中时,它可以工作。我试图编写自己的简单I / O。该程序的目标是询问每个变量a, b, c等的输入。当我尝试运行代码时,终端提示(11db)然后出现EXC_BAD_ACCESS错误和警告%转换多于数据参数。当我输入的代码与本教程使用的代码几乎相同时,不确定是什么问题。我使用int变量,因为这个想法是1+2+3。我试图将sum = a + b + c放在printfscanf函数的前面和后面,但都没有起作用。我对造成这种情况的原因不知所措。我确实在我的反馈窗口中注意到

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 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;

}

1 个答案:

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