免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: add358
打印 上一主题 下一主题

[C] 怎样宏定义一个1T大小的数 [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
11 [报告]
发表于 2013-04-19 22:55 |只看该作者
unsigned long long

论坛徽章:
36
CU大牛徽章
日期:2013-09-18 15:24:20NBA常规赛纪念章
日期:2015-05-04 22:32:03牛市纪念徽章
日期:2015-07-24 12:48:5515-16赛季CBA联赛之辽宁
日期:2016-03-30 09:26:4715-16赛季CBA联赛之北控
日期:2016-03-30 11:26:2315-16赛季CBA联赛之广夏
日期:2016-05-20 15:46:5715-16赛季CBA联赛之吉林
日期:2016-05-24 11:38:0615-16赛季CBA联赛之青岛
日期:2016-05-30 13:41:3215-16赛季CBA联赛之同曦
日期:2016-06-23 16:41:052015年亚洲杯之巴林
日期:2015-02-03 15:05:04CU大牛徽章
日期:2013-09-18 15:24:52CU十二周年纪念徽章
日期:2013-10-24 15:46:53
12 [报告]
发表于 2013-04-20 09:29 |只看该作者
用宏直接定义一个1T的数据是完全没问题的吧,只是你使用的时候会溢出,long long 好像是C99才开始有定义的,C89中可以分成高32位和低32位来处理。

论坛徽章:
0
13 [报告]
发表于 2013-04-21 10:11 |只看该作者
1T大小的数,指的是这个数占用的物理存储空间(比如硬盘)大小是1T。
好好想想~

论坛徽章:
0
14 [报告]
发表于 2013-04-22 16:55 |只看该作者
回复 9# sonicling


    Sorry! I was wrong!

论坛徽章:
0
15 [报告]
发表于 2013-04-25 16:27 |只看该作者
zhumao 发表于 2013-04-21 10:11
1T大小的数,指的是这个数占用的物理存储空间(比如硬盘)大小是1T。
好好想想~


两个数字,tB和tb。用数组存。高位存数字的高位,低位存数字的地位。占地分别为1TB和1Tb。gcc能编过,反正我没跑。数组没初始化,真想打的话,可以尝试初始化一下。
  1. #include <stdio.h>

  2. #define TB (1024ULL * 1024ULL * 1024ULL * 1024ULL)
  3. #define Tb (1024ULL * 1024ULL * 1024ULL * 1024ULL / 8)

  4. int main()
  5. {
  6.     unsigned long long i;

  7.     char tB[TB];
  8.     char tb[Tb];

  9.     printf("TB value is 0x");
  10.     for (i = (TB - 1); i >=0; i--) {
  11.         printf("%02x", tB[i]);
  12.     }
  13.     printf("\n");

  14.     printf("Tb value is 0x");
  15.     for (i = (Tb - 1); i >=0; i--) {
  16.         printf("%02x", tb[i]);
  17.     }
  18.     printf("\n");


  19.     return 0;
  20. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP