#include "stdio.h"
main()
{
int i,j;
long k;
i=100;
j=1000;
k=i*j;
printf("%ld\n",k);
}
运行结果为:-31072

明显是数据越界了嘛。但是已经把k设为长整型了,100,000这个数应该是没有越界的。
请问是咋回事么~

展开全部
收起
6回答
提交回答
  • 至过去的我

    2044人对此回答表示赞同

    我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>
    发布于
  • Madison

    18人对此回答表示赞同

    #include "stdio.h"
    main()
    {
    int i,j;
    long k;
    i=100;
    j=1000;
    k=(long)i*(long)j;
    printf("%ld\n",k);
    }

    这样就行了。
    展开
    18
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Anthony

    15人对此回答表示赞同

    会不会是自动类型转换了,类型也是有优先级别的
    具体是怎样我不太记得了,看看书吧
    会找到为什么的
    展开
    15
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 耿耿

    10人对此回答表示赞同

    改法为:

    #include "stdio.h"
    main()
    {
    int i,j;
    long k;
    i=100;
    j=1000;
    k=(long)i*j;
    printf("%ld\n",k);
    }

    虽然K 是长整型,但i和j都是整型,如果i和j 其中有一个是长整型也行!

    因为自动转换
    展开
    10
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 旋转跳跃

    7人对此回答表示赞同

    vc 下int 和 long都是32位.
    Tc下好像int 是16位的
    展开
    7
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Lily

    4人对此回答表示赞同

    你用size(long)看下是多少位不就知道了,长整型的位数跟编译器有关的.或者换成能存储更大数据的类型就知道是怎么回事了.
    展开
    4
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 有口无心

    4人对此回答表示赞同

    #include "stdio.h"
    main()
    {
    int i,j;
    long int k;
    i=100;
    j=1000;
    k=i*j;
    printf("%ld\n",k);
    }
    你那个K定义的不对长整型是long int
    展开
    4
    0回复
    发布于 6年前

    评论(0)

    收起评论

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
咨询热线

13312967497

扫码添加业务即可随时咨询 还可领取小程序推广攻略

业务咨询: 13312967497
扫码咨询

扫码咨询套餐

回到顶部