免费注册 查看新帖 |

Chinaunix

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

[C] 考考大家的C语言基础  关闭 [复制链接]

论坛徽章:
0
71 [报告]
发表于 2008-12-21 17:10 |只看该作者

论坛徽章:
0
72 [报告]
发表于 2008-12-21 22:00 |只看该作者

位 应该是 从高到低使用的吧?

位 应该是 从"高到低" 使用的吧?

[ 本帖最后由 fengmushu 于 2008-12-22 17:03 编辑 ]

论坛徽章:
0
73 [报告]
发表于 2008-12-22 10:02 |只看该作者
原帖由 姚世友 于 2008-12-17 22:12 发表


正解,谢谢....

endian就不考虑了?

论坛徽章:
0
74 [报告]
发表于 2008-12-22 10:44 |只看该作者
上学时常玩这样的游戏,后来工作才知道你编的程序不但是给自己看的,还是给同事领导或后来做代码维护的人看的.所以编程是用最直观最简单明了的语句来实现用户需求.不过C语言打好基础的确很重要.比如指针,各种运算以及优先级,还有各种编译器对同一语句的编译顺序有可能是不同的.

论坛徽章:
0
75 [报告]
发表于 2008-12-22 13:04 |只看该作者
貌似Pro_sky的解释是对的,但是为啥编译器用1补齐高位,有可能随着编译器的不同结果不同

论坛徽章:
0
76 [报告]
发表于 2008-12-22 13:16 |只看该作者
原帖由 姚世友 于 2008-12-17 21:51 发表
#include
#include
#include

int main(int argc, char** argv)
{
    union
    {
          struct  
          {
              char a:1;         
              char b:2;         
    ...


我的程序不会出现一个警告信息,看看楼主的:
Warning t1.c 20: Code has no effect in function main
Warning t1.c 22: Parameter 'argc' is never used in function main
Warning t1.c 22: Parameter 'argv' is never used in function main

论坛徽章:
0
77 [报告]
发表于 2008-12-22 13:26 |只看该作者
c99 里对位域的规定。

http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf  114页(页面下脚的102页)

10 An implementation may allocate any addressable storage unit large enough to hold a bitfield.
If enough space remains, a bit-field that immediately follows another bit-field in a
structure shall be packed into adjacent bits of the same unit. If insufficient space remains,
whether a bit-field that does not fit is put into the next unit or overlaps adjacent units is
implementation-defined. The order of allocation of bit-fields within a unit (high-order to
low-order or low-order to high-order) is implementation-defined. The alignment of the
addressable storage unit is unspecified.

可见c99里规定很少,所以这样代码的可移植性值得思考。

论坛徽章:
0
78 [报告]
发表于 2008-12-22 15:11 |只看该作者

我也觉得和大端小端无关

原帖由 emacsnw 于 2008-12-21 11:14 发表


这里好像和大端小端没关系吧。


大端小端的顺序区别是把字节组合成双字节四字节时候哪个字节是低位,而不是一个字节内部的不同位的权值顺序
要说和位段的实现有关倒是有可能的,但我自己没有办法测试...

论坛徽章:
0
79 [报告]
发表于 2008-12-22 16:39 |只看该作者
原帖由 fengmushu 于 2008-12-21 22:00 发表
装B男, 要看字节序~


装你老母阿 操

看字节序,TMD char 型看字节序?跟谁学的?

你在大端模式下编译试试,看看能不能通过,是不是输出 -1在过来放屁!

操,有些人就是欠骂!

不骂骂你这种不知自己吃几碗干饭,到处骂人的人,对不起CU这些搞技术的人!

别他妈的整天装B装B的,很叼阿?! 操!

[ 本帖最后由 姚世友 于 2008-12-22 17:09 编辑 ]

论坛徽章:
0
80 [报告]
发表于 2008-12-22 22:03 |只看该作者
答案是:-1,
但是我不知道为什么,
还请高手解释一下。

谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP