不会添加 C 变量

C-variables won't be added

开始学习C,想做一个加法程序。 我写了下面的代码:

#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main() {
    int a,b,c;
    scanf("Give a,b",&a,&b);
    c=a + b;
    printf("A+b=",c);
    printf("\n\n\n");
    return 0;
}

它应该从用户那里取2个数字并显示他们的总和。 但是,用户输入 2 个数字后我得到的唯一输出是 A+b= 有什么想法吗?

您未能包含整数变量的格式说明符 c。没有这个 printf 就不知道在格式字符串之后期望的参数是什么,它们的类型是什么,或者它们是如何打印的。变化:

printf("A+b=",c);

至:

printf("A+b=%d",c);

请注意,启用警告的良好编译器(例如 gcc -Wall ...)会在编译时为您指出这个简单的错误。


另外你的 scanf 用法是错误的 - 更改:

scanf("Give a,b",&a,&b);

至:

printf("Give a,b");
scanf("%d %d",&a,&b);

您在 printf() 调用中缺少 %d 转换说明符:

printf("a+b=%d\n", c);

否则,printf() 不知道它正在接收第二个参数,也不会对其执行任何操作。

当然,c 可以只是 a + b,不需要将总和存储在单独的变量中只是为了打印它。

此外,您需要 scanf() 中的说明符,它应该是:

scanf("%d %d", &a, &b);

scanf() 的第一个参数 不是 打印的提示,它描述了预期的输入。

最后,在依赖 ab 具有有效值之前,您应该检查 scanf() 的 return 值以确保它是 2。 I/O 可能会失败,如果发生这种情况,您需要确保您的程序执行正确的操作。

scanf 是一个用于接收用户输入的函数。你期待它打印一些东西,不是吗?您需要 printf 代替:

printf("Give a,b\n"); //\n at the end is good

现在,使用scanf扫描输入:

scanf("%d %d",&a,&b);

正如其他答案所提到的那样,您还缺少最后 printf 中的 %d 格式说明符。

scanf() 是一个输入 C 函数(带格式扫描)使用格式说明符(%数据类型例如:%d 或%i = int,这是你想要的,或 %c = char) 以给定格式存储数据条目,由 stdin(键盘缓冲区)提供,直到并包括 null (\0) 终止字符(如果是字符串);

C中的Ampersand(&)用来designate/return内存地址(where变量被存储),因为与变量的值相反。

     scanf("Give a,b",&a,&b);
     c=a + b;
     printf("A+b=",c);

上面第一行代码的问题是您忘记包含格式说明符(%d 或 %i 在这种情况下都适用,因为我假设您添加的是整数而不是 floats/etc)。

因此第一个问题的解决方法很简单:

     scanf("%d %d",&a,&b);

此外,您似乎试图将输入和输出合并为一行Printf,和scanf一样,可以使用格式说明符,或者它可以只包含一串字符,并打印到标准输出(控制台)。

您想要做的是 在存储所述输入之前包括询问用户输入的提示。您 在末尾添加 \n "newline" 字符 以确保在其他输出和输入之间提供间距,以及进入 char 数组 [] 或字符串时的许多其他原因.但就目前而言,这应该可以解决问题:

     printf("Give a,b\n");
     scanf("%d %d",&a,&b);

希望这对当前作业和 general/C 编程概念都有帮助!