张邦焱 发表于 2021-2-16 23:41:06

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,不知道问题在哪

昨非 发表于 2021-2-16 23:48:43

亲测没问题啊,你这是溢出了吧

l_l_t 发表于 2021-2-16 23:49:08

输入的时候数字用空格或者回车就没问题了吧

张邦焱 发表于 2021-2-17 00:00:26

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:01:40

张邦焱 发表于 2021-2-17 00:00
是的
scanf_s("%d,%d", &a,&b);   1,2
scanf_s("%d%d", &a,&b);    1 2


牛啊

张邦焱 发表于 2021-2-17 00:02:35

昨非 发表于 2021-2-16 23:48
亲测没问题啊,你这是溢出了吧

啊溢出是啥呀

昨非 发表于 2021-2-17 00:05:43

张邦焱 发表于 2021-2-17 00:02
啊溢出是啥呀

解释不太清楚,你可以自己百度一下
大概意思就是你的输入超出了整形的范围,才出现了负数
通常情况下,原因在于你的输入方法和格式控制串不匹配

张邦焱 发表于 2021-2-17 00:06:32

昨非 发表于 2021-2-17 00:05
解释不太清楚,你可以自己百度一下
大概意思就是你的输入超出了整形的范围,才出现了负数
通常情况下, ...

嗯嗯

jackz007 发表于 2021-2-17 00:27:19

本帖最后由 jackz007 于 2021-2-17 00:33 编辑

       正整数的数值范围是 0 ~ 2147483647,如果一个变量的值已经是 2147483647,这个时候,不可以对这个变量再加任何一个非零的正值,只要对这个变量加 1,这个变量就会变成负值。这个结果显然不符合逻辑,这种现象就是溢出。
       这种现象用 char 型数据更加典型,char 的正值范围是 0 ~ 127,如果 char c = 127,那么,执行 c ++ 后,c 的值会成为 char 负值范围 -128 ~ -1 的下限值 - 128。

桃花飞舞 发表于 2021-2-17 01:29:51

为什么scanf_s(),报错了,是打开的方式不对么?

张邦焱 发表于 2021-3-10 18:25:02

木问题
页: [1]
查看完整版本: C语言