c - c语言中的函数
问题描述
我是 c 新手,当我在 c 中编写一个基本程序时,它显示了两个答案 ..1)当我分别声明和初始化变量时 2)当我在同一行中声明和初始化变量时。谁能告诉我请问我的错吗?
#include <stdio.h>
#include <stdlib.h>
void sum()
{
printf("enter the numbers to be added\n");
int x=scanf("%d",&x);
int y=scanf("%d",&y);
int sum=(x+y);
printf("the sum of two numbers is %d\n",sum);
}
int main()
{
printf("welcome to addition calculator\n");
sum();
return 0;
}
当我给出 3 和 4 作为输入时,我得到 2 作为答案
解决方案
scanf("%d", &x)
将读取的数字存储到x
. 它将返回成功读取字段的数量(1
在您的情况下)。如果您之后将该返回值分配给x
,您将覆盖用户输入的任何内容1
。并1 + 1
生产2
。
解决方案:
int x;
int y;
scanf("%d",&x);
scanf("%d",&y);
正如 David 在评论中提醒的那样,您可能想要检查是否已成功读取所有字段。例如,在您的情况下,如果您输入非数字,scanf
则不会将该%d
字段解析为成功,并将返回0
. 您可以测试此结果以确保用户做了他们应该做的事情:
int x;
int y;
while (scanf("%d", &x) != 1) {
printf("Enter a NUMBER, you illiterate buffoon!\n");
}
while (scanf("%d", &y) != 1) {
printf("Enter a NUMBER! You managed with %d, how is this suddenly hard now?!\n", x);
}
推荐阅读
- c++ - Visual C++:从 DLL 调用时 XGBoost 不起作用
- python - 从 Python 列表中删除坐标
- c - 导入库可以同时包含存根和静态代码吗?
- google-cloud-platform - 如何使用 Google Vision 和 Google Video Intelligence 检测视频中的徽标?
- python-3.x - Python3 列表中的换行符
- php - Hostgator 将 PHP 版本更新到 7.1?
- javascript - 即使几秒钟后再次显示,如何强制浏览器隐藏元素
- javascript - 绘制多条线 JavaScript - 并不总是在每次点击时点击
- node.js - 如何使用 n 将特定版本的节点设置为默认值
- visual-studio - unity ShadeGraph 子图和输出位置