CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

__int64 运算问题

楼主saint123456()2006-03-04 14:00:06 在 C/C++ / C++ 语言 提问

unsigned   __int64   val1   =   719487519972980960;  
  unsigned   __int64   val2   =   10272667579587871864;  
   
  long   equal   =   val1   -   val2;  
   
  在运算的equal为正值,请问高手该问题出现在哪,在线等待 问题点数:100、回复次数:12Top

1 楼hyigle_love(parker)回复于 2006-03-04 14:45:54 得分 0

结果是负的啊  
  -951110552  
  Press   any   key   to   continue  
  Top

2 楼saint123456()回复于 2006-03-04 14:52:58 得分 0

忘了说一下在  
   
  __int64   equal   =   val1   -   val2;  
   
  这种情况的时候结果为错误的Top

3 楼y_cpp()回复于 2006-03-04 15:16:27 得分 0

好像结果还是楼上所说呀,不是正的Top

4 楼manplus(魅力加加)回复于 2006-03-04 15:24:07 得分 0

upTop

5 楼strangerryf(白痴与白痴讨论的结果一定是比白痴更为白痴的结论)回复于 2006-03-04 16:40:50 得分 0

在limits.h中有定义  
  _I64_MIN  
    Minimum   value   for   a   variable   of   type   __int64  
    -9223372036854775808  
     
  _I64_MAX  
    Maximum   value   for   a   variable   of   type   __int64  
    9223372036854775807  
     
  _UI64_MAX  
    Maximum   value   for   a   variable   of   type   unsigned   __int64  
    18446744073709551615   (0xffffffffffffffff)  
   
  val的值超出了__int64的范围,内部处理好像直接转换成__int64,然后就成了负数了。  
   
  $   bc  
  bc   1.06  
  Copyright   1991-1994,   1997,   1998,   2000   Free   Software   Foundation,   Inc.  
  This   is   free   software   with   ABSOLUTELY   NO   WARRANTY.  
  For   details   type   `warranty'.  
  719487519972980960   +   8174076494121679752  
  8893564014094660712  
   
  9223372036854775807   这个是__int64的最大值Top

6 楼ximig(xiao)回复于 2006-03-04 17:09:35 得分 0

楼上的说的有道理~~~~Top

7 楼ugg(逸学堂(exuetang.net))回复于 2006-03-04 21:50:38 得分 0

unsigned   __int64   val1   =   719487519972980960;  
  unsigned   __int64   val2   =   10272667579587871864;  
   
  long   equal   =   val1   -   val2;  
   
  在运算的equal为正值,请问高手该问题出现在哪,在线等待  
  ~~~~~~~~~~~~~~~·  
  最好用long   long类型表示64位,这样可以在语言层次控制数据。而不是依赖编译器环境。Top

8 楼bohlee(我心澎湃)回复于 2006-03-07 00:47:20 得分 0

markTop

9 楼strangerryf(白痴与白痴讨论的结果一定是比白痴更为白痴的结论)回复于 2006-03-08 22:15:48 得分 0

翻了翻标准C++03里边没有long   long,C99里边应该叫做long   long   int。Top

10 楼fiftymetre(50米深蓝)回复于 2006-03-09 00:20:33 得分 0

strangerryf(白痴与白痴讨论的结果一定是比白痴更为白痴的结论)    
   
  说的好啊Top

11 楼hyigle_love(parker)回复于 2006-03-10 15:49:06 得分 0

怪不得昨天我想用long long 的时候编译有错误  
  哈哈!  
  顶! strangerryf(白痴与白痴讨论的结果一定是比白痴更为白痴的结论)    
  Top

12 楼ruodeer(看我的个性签名都给我分)回复于 2006-03-10 22:44:01 得分 0

我的印象中也只有long   long   呵呵Top

相关问题

  • 送分的问题!两个int之间的与运算
  • 请教如何JTextField中显示运算结果,是个int型的数组
  • 矩阵运算
  • 位运算
  • 运算符?
  • 大数运算
  • 位运算
  • ---------------日期运算-------------------
  • 浮点运算???
  • 指针运算

关键词

  • 白痴
  • 运算
  • val
  • long
  • 结果
  • equal
  • 问题
  • unsigned
  • int64
  • for a variable

得分解答快速导航

  • 帖主:saint123456

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo