64位系统下 unsigned long long int 和 unsigned long int区别?

believe_me 2013-05-07 04:55:37
加精
请问 64位系统下 unsigned long long int 和 unsigned long int是否有区别?
如果没有区别的话,我是否可以在我的代码中这样定义保证在64位和32位的系统都可以使用。
而且使用 %llu 不会产生报警
谢谢
#define uint64_t unsigned long long int
...全文
30911 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_33256908 2015-12-04
  • 打赏
  • 举报
回复
加油.........
qq_33256908 2015-12-04
  • 打赏
  • 举报
回复
秦昌盛 2015-12-04
  • 打赏
  • 举报
回复
http://zh.wikipedia.org/wiki/64%E4%BD%8Dcpu#64_.E4.BD.8D.E5.85.83.E8.B3.87.E6.96.99.E6.A8.A1.E5.9E.8B
专业代码搬运 2015-12-02
  • 打赏
  • 举报
回复
试试不就好了,简单粗暴
钮牛 2015-12-01
  • 打赏
  • 举报
回复
这个还是有区别的,最好自己打印出来看一下
稻草刀刀 2015-11-29
  • 打赏
  • 举报
回复
sizeof(ULONG_PTR)=8 sizeof(unsigned long)=8 sizeof(unsigned long long)=8 sizeof(unsigned long int)=8 sizeof(unsigned long long int)=8
zhangfeng1221 2015-11-25
  • 打赏
  • 举报
回复
.........
jingguoqingzn 2015-11-24
  • 打赏
  • 举报
回复
不错啊,感谢
cattpon 2015-11-21
  • 打赏
  • 举报
回复
向下兼容的啊
CyberLogix 2015-11-21
  • 打赏
  • 举报
回复
引用 4 楼 mymtom 的回复:
64位有多种数据模式,最常见的是LP64和LLP64。 许多 64位编译器使用 LP64 模型(包括 Solaris、AIX、HP、Linux、Mac OS X、IBM z/OS 原生编译器)。微软的 VC++ 编译器使用 LLP64 模型。 http://zh.wikipedia.org/wiki/64%E4%BD%8Dcpu#64_.E4.BD.8D.E5.85.83.E8.B3.87.E6.96.99.E6.A8.A1.E5.9E.8B LP64下unsigned long long int和unsigned long int都是64位 LLP64下unsigned long long int是64位unsigned long int是32位 所以如果应用程序需要特定位数的整数类型,最好使用C99的uint64_t之类的数据类型。
这个值得研究下,
LinuxLeeSin 2015-11-21
  • 打赏
  • 举报
回复 1
引用 7 楼 zhao4zhong1 的回复:
不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!

有人说一套做一套,你相信他说的还是相信他做的?
其实严格来说这个世界上古往今来所有人都是说一套做一套,不是吗?

不要写连自己也预测不了结果的代码!
真理需要探索,曾经多少人觉得重球比轻球下落快,世界以地球为中心
qq_19407777 2014-09-17
  • 打赏
  • 举报
回复
编译器自己会定义有32位和64位的关键字,楼主只是为了使代码在不同编译器之间能顺利编译通过,并且不会有错误,那就应该是用编译器自己定义的关键字,用typedef声明一个自己的关键字,比如typedef __int64 INT64,针对不同编译器都声明一个,用#ifdef...#define...#else...#end处理,这样才有保证
沙尘暗影 2014-09-17
  • 打赏
  • 举报
回复
我一般都用int8, int16, int32等等这样的类型
  • 打赏
  • 举报
回复 1
引用 4 楼 mymtom 的回复:
64位有多种数据模式,最常见的是LP64和LLP64。 许多 64位编译器使用 LP64 模型(包括 Solaris、AIX、HP、Linux、Mac OS X、IBM z/OS 原生编译器)。微软的 VC++ 编译器使用 LLP64 模型。 http://zh.wikipedia.org/wiki/64%E4%BD%8Dcpu#64_.E4.BD.8D.E5.85.83.E8.B3.87.E6.96.99.E6.A8.A1.E5.9E.8B LP64下unsigned long long int和unsigned long int都是64位 LLP64下unsigned long long int是64位unsigned long int是32位 所以如果应用程序需要特定位数的整数类型,最好使用C99的uint64_t之类的数据类型。
这么好的答案不得不顶一下啊~~~
very2002750 2014-09-16
  • 打赏
  • 举报
回复
引用 4 楼 mymtom 的回复:
64位有多种数据模式,最常见的是LP64和LLP64。 许多 64位编译器使用 LP64 模型(包括 Solaris、AIX、HP、Linux、Mac OS X、IBM z/OS 原生编译器)。微软的 VC++ 编译器使用 LLP64 模型。 http://zh.wikipedia.org/wiki/64%E4%BD%8Dcpu#64_.E4.BD.8D.E5.85.83.E8.B3.87.E6.96.99.E6.A8.A1.E5.9E.8B LP64下unsigned long long int和unsigned long int都是64位 LLP64下unsigned long long int是64位unsigned long int是32位 所以如果应用程序需要特定位数的整数类型,最好使用C99的uint64_t之类的数据类型。
学习了
Saleayas 2014-09-16
  • 打赏
  • 举报
回复
如果你需要明确 int 的大小,那么使用诸如 int64_t 这样明确大小的整型。
  • 打赏
  • 举报
回复
引用 13 楼 CJF_iceKing 的回复:
[quote=引用 11 楼 zhao4zhong1 的回复:] 程序员迟早是要了解每个编译器选项的意义的。
请问下赵老师,这个在VS中有编译选项可以控制吗?[/quote] 可以删除我的问题吗....版主
  • 打赏
  • 举报
回复
引用 11 楼 zhao4zhong1 的回复:
程序员迟早是要了解每个编译器选项的意义的。
请问下赵老师,这个在VS中有编译选项可以控制吗?
学海无涯子 2014-09-16
  • 打赏
  • 举报
回复
引用 7 楼 zhao4zhong1 的回复:
不要迷信书、考题、老师、回帖; 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实! 有人说一套做一套,你相信他说的还是相信他做的? 其实严格来说这个世界上古往今来所有人都是说一套做一套,不是吗? 不要写连自己也预测不了结果的代码!
说得漂亮
赵4老师 2014-09-16
  • 打赏
  • 举报
回复
程序员迟早是要了解每个编译器选项的意义的。
加载更多回复(9)

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧