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
...全文
29085 点赞 收藏 29
写回复
29 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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-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
引用 7 楼 zhao4zhong1 的回复:
不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!

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

不要写连自己也预测不了结果的代码!
真理需要探索,曾经多少人觉得重球比轻球下落快,世界以地球为中心
回复
qq_19407777 2014-09-17
编译器自己会定义有32位和64位的关键字,楼主只是为了使代码在不同编译器之间能顺利编译通过,并且不会有错误,那就应该是用编译器自己定义的关键字,用typedef声明一个自己的关键字,比如typedef __int64 INT64,针对不同编译器都声明一个,用#ifdef...#define...#else...#end处理,这样才有保证
回复
沙尘暗影 2014-09-17
我一般都用int8, int16, int32等等这样的类型
回复
引用 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
程序员迟早是要了解每个编译器选项的意义的。
回复
加载更多回复
相关推荐
发帖
C++ 语言
创建于2007-09-28

6.0w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
申请成为版主
帖子事件
创建了帖子
2013-05-07 04:55
社区公告
暂无公告