| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 674 人关注过本帖
标题:运气好还能碰上101128442溢出后等于2147483280
只看楼主 加入收藏
mathspanda
Rank: 2
等 级:论坛游民
帖 子:15
专家分:15
注 册:2012-5-12
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
运气好还能碰上101128442溢出后等于2147483280
运气好还能碰上101128442溢出后等于2147483280
有这种可能么?
2012-08-08 14:07
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:5 
为什么不可能?

1-2还可以使65535呢

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2012-08-08 14:44
mathspanda
Rank: 2
等 级:论坛游民
帖 子:15
专家分:15
注 册:2012-5-12
收藏
得分:0 
回复 2楼 peach5460
能具体的解释一下过程么?
谢谢了
2012-08-08 16:40
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:10 
以下是引用mathspanda在2012-8-8 16:40:28的发言:

能具体的解释一下过程么?
谢谢了

#include <stdio.h>

int main(void)
{
    unsigned short i = 1 - 2;
    printf("%u", i);

    return 0;
}

认真看补码你就明白了
2012-08-08 16:52
mathspanda
Rank: 2
等 级:论坛游民
帖 子:15
专家分:15
注 册:2012-5-12
收藏
得分:0 
回复 4楼 zklhp
额 我说的不是这个 这个我知道啊
我说的是101128442溢出后等于2147483280的过程
谢了
2012-08-08 16:59
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:5 
#include <stdio.h>

int main(void)
{
    unsigned int i = 101128442;
    i += 6341322134;
    printf("%u\n", i);

    return 0;
}

gcc能看到效果 不知道其他编译器咋样

用计数器算算就知道咋回事了
2012-08-08 17:07
mathspanda
Rank: 2
等 级:论坛游民
帖 子:15
专家分:15
注 册:2012-5-12
收藏
得分:0 
回复 6楼 zklhp
好吧 我承认我问题没有说清楚 sorry了
程序代码:
  #include<stdio.h>
  /* do NOT use this if x is very large or small */
  int is_prime(int x)
  {
    int i;
    for(i = 2; i*i <= x; i++)
      if(x % i == 0)   return 0;
    return 1;
  }
  
  int main()
  {
    int i, m;
    scanf("%d", &m);
    for(i = m-2; i >= 3; i--)
      if(is_prime(i) && is_prime(i+2)) {
        printf("%d %d\n", i, i+2);
        break;
      }
    return 0;
  }


题目的注释中有这样一句:当循环到i=46340时i*i<n;但i=46341时i*i=2147488281,超过了int的最大值,溢出变成负数,仍然满足i*i<n!n不是太大的话,运气好还能碰上101128442溢出后等于2147483280,终止循环;但如果n=2147483647的话,循环将一直进行下去。(来自刘汝佳编著的《算法竞赛入门经典》)
我就是对“运气好还能碰上101128442溢出后等于2147483280”不太理解!
2012-08-08 17:14
快速回复:运气好还能碰上101128442溢出后等于2147483280
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.058121 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved