C语言
#include<stdio.h>int main()
{
int add(int x, int y);
int a, b, c;
printf("please input a,b\n");
scanf_s("%d%d", &a,&b);
c = add(a, b);
printf("sum is %d\n", c);
return 0;
}
int add(int x, int y)
{
int z ;
z = x+y ;
return z;
}
运算结果是-858993459,不知道问题在哪 亲测没问题啊,你这是溢出了吧 输入的时候数字用空格或者回车就没问题了吧 l_l_t 发表于 2021-2-16 23:49
输入的时候数字用空格或者回车就没问题了吧
是的
scanf_s("%d,%d", &a,&b); 1,2
scanf_s("%d%d", &a,&b); 1 2
这样才可以 张邦焱 发表于 2021-2-17 00:00
是的
scanf_s("%d,%d", &a,&b); 1,2
scanf_s("%d%d", &a,&b); 1 2
牛啊 昨非 发表于 2021-2-16 23:48
亲测没问题啊,你这是溢出了吧
啊溢出是啥呀 张邦焱 发表于 2021-2-17 00:02
啊溢出是啥呀
解释不太清楚,你可以自己百度一下
大概意思就是你的输入超出了整形的范围,才出现了负数
通常情况下,原因在于你的输入方法和格式控制串不匹配 昨非 发表于 2021-2-17 00:05
解释不太清楚,你可以自己百度一下
大概意思就是你的输入超出了整形的范围,才出现了负数
通常情况下, ...
嗯嗯 本帖最后由 jackz007 于 2021-2-17 00:33 编辑
正整数的数值范围是 0 ~ 2147483647,如果一个变量的值已经是 2147483647,这个时候,不可以对这个变量再加任何一个非零的正值,只要对这个变量加 1,这个变量就会变成负值。这个结果显然不符合逻辑,这种现象就是溢出。
这种现象用 char 型数据更加典型,char 的正值范围是 0 ~ 127,如果 char c = 127,那么,执行 c ++ 后,c 的值会成为 char 负值范围 -128 ~ -1 的下限值 - 128。 为什么scanf_s(),报错了,是打开的方式不对么? 木问题
页:
[1]