免费注册 查看新帖 |

Chinaunix

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

不知道大家看了这个是什么心里滋味 [复制链接]

论坛徽章:
0
81 [报告]
发表于 2012-04-27 20:57 |只看该作者
回复 75# OwnWaterloo


好,你这里说的的确是一个问题。你少来用这种奇技淫巧来搞我。c 标准对数据的要求只是对编译器而言,要求编译器保证数据精度,但是常规认识是char+char会把char当int来搞。而且,对于文本字符,其实就是int。懂么?我再重复一边:标准只是要求编译器保证计算精度。唉,为了保证你这种智商能懂,免得你给我找借口,给你贴代码,自己去看。
  1. #include <limits.h>
  2. #include <string.h>
  3. #include <stdio.h>

  4. /*
  5. int main(int argc, char* argv[])
  6. {
  7.     printf("[%d,%d]\n", CHAR_MIN, CHAR_MAX);
  8.     if (argc>1 && strlen(argv[1])>=2)
  9.     {
  10.         char* p = argv[1];
  11.         printf("%d + %d\n", p[0], p[1]);
  12.         printf("%d\n", (char)(p[0]+p[1]));
  13.         return 0;
  14.     }
  15.     return -1;
  16. }
  17. */

  18. void print0(char i) { printf("%d\n", i); }
  19. void print1(unsigned char i) { printf("%d\n", i); }
  20. void print2(int i) { printf("%d\n", i); }
  21. void print3(unsigned int i) { printf("%d\n", i); }
  22. #define print(i) printf("%zu\n", i);

  23. void print4(int i) { printf("%d\n", i); }

  24. int main()
  25. {
  26.     char *p = "zz";
  27.    
  28.     print0(p[0]+p[1]);
  29.     print1(p[0]+p[1]);
  30.     print2(p[0]+p[1]);
  31.     print3(p[0]+p[1]);

  32.     print2(sizeof('z'));
  33.     print2(sizeof(p[0]));
  34.     print2(sizeof(p[0]+p[1]));
  35.     print2(sizeof((char)(p[0]+p[1])));
  36.     print2(sizeof((unsigned char)(p[0]+p[1])));
  37.     print2(sizeof(char));
  38.     print2(sizeof(unsigned char));

  39.     print(sizeof('z'));
  40.     print(sizeof(p[0]));
  41.     print(sizeof(p[0]+p[1]));
  42.     print(sizeof((char)(p[0]+p[1])));
  43.     print(sizeof((unsigned char)(p[0]+p[1])));
  44.     print(sizeof(char));
  45.     print(sizeof(unsigned char));
  46.    
  47.     return 0;
  48. }
复制代码
编译器和编译参数都多试几个,c99

论坛徽章:
0
82 [报告]
发表于 2012-04-27 20:58 |只看该作者
回复 75# OwnWaterloo


你除了这些奇技淫巧会什么?这些东西,我从来就不关心,你却玩得津津有味,真是无法理解
蚍蜉撼大树,可笑不量力,

论坛徽章:
0
83 [报告]
发表于 2012-04-27 21:01 |只看该作者
回复 78# OwnWaterloo


老子引用重点,你说我断章取义,好,老子以后就给你来你的上下文,到时看你还跟老子狡辩什么。


这句可以写你棺盖上
人在做,天在看

论坛徽章:
0
84 [报告]
发表于 2012-04-27 21:04 |只看该作者
回复 77# OwnWaterloo


    你能不要搞这么多垃圾么?你是不是把我当成你一样有阅读障碍?我看得懂,不用你在这里玩花痴

论坛徽章:
0
85 [报告]
发表于 2012-04-27 21:06 |只看该作者
回复 79# tempname2


    不是我脾气爆炸,你看他全面骂人那些话,还有他之前骂那些前辈的话,你自己看看有多难听,我是前面被c++书那个sb气炸了还没完全恢复,他又来,你说谁能不爆炸?换你,你行么?

论坛徽章:
0
86 [报告]
发表于 2012-04-27 21:06 |只看该作者
回复 80# hbmhalley


    可能是比如你提交一个包含url的帖子,这个功能可以把这些url做成可以点击就跳过去那种,我觉得是这样

论坛徽章:
0
87 [报告]
发表于 2012-04-27 21:09 |只看该作者
本帖最后由 hbmhalley 于 2012-04-27 21:18 编辑

回复 86# walleeee


    好像不是,以前遇到过这个问题,而且都是[ code ]里 $x这个模样的 比如
  1. [        DISCUZ_CODE_0        ]
复制代码
$&
  1. $
复制代码
$$

论坛徽章:
0
88 [报告]
发表于 2012-04-27 21:10 |只看该作者
回复 87# hbmhalley


    那就不知道了,我看我这个是没打勾那个功能

论坛徽章:
0
89 [报告]
发表于 2012-04-27 21:16 |只看该作者
我为什么试了几个编译器,就你没你说的Char+char会提升?你别放屁了

但是常规认识是char+char会把char当int来搞。而且,对于文本字符,其实就是int


walleeee哥,你的论点是什么...

标准只是要求编译器保证计算精度


integer promotion应该不是精度问题,
不敢擅评,不过见过“int是计算机处理起来最有效率的整形”的说法。

论坛徽章:
0
90 [报告]
发表于 2012-04-27 21:49 |只看该作者
回复 89# sacry


什么论点?是ow那个sb在问,我在答,我不知道论点是什么。

int在以前有字长的说法,字长概念本身现在变得模棱两可,int也变得模棱两可,所以我一般更喜欢说总线宽度来代替这些
你说的没错,操作总线宽度的数据效率是比较好。所以编译器会搞很多对齐,在各个层面
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP