您好、欢迎来到现金彩票网!
当前位置:手机棋牌游戏平台 > 位域 >

C结构体之位域的问题。

发布时间:2019-08-16 23:26 来源:未知 编辑:admin

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  表达式中,所有小于int类型的整数都会提升为int类型,提升方式是符号位扩展。入参也是一种表达式。

  表达式中有数据无法用int表达时,所有数据会提升为unsign int,提升方式是左侧补0。

  printf对所以%d对应的入参都当成有符号类型,而不管原类型是什么,例如你提供0xFFFFFFFFU,它会输出-1.

  为什么呢?是这样的:你的a、c两个变量实际上只有1位,而首位为1的变量代表是一个负值,因此a、c赋值为1后,结果为-1;变量b有3位,赋值为3后,首位为0,因此结果为3。

  进一步验证,假若main函数中,it.b=7,则可以看到b的输出结果也变为-1;

  再进一步验证,将struct bit中的数据类型都改为unsigned,其余都不变,输出结果会是:

  不过我还是有一个疑问,其中a和c是只有一位,而且它那位上被赋值为1.对吧?那现在一个一位的变量怎么变成int型的32位的整数输出的那?b又是怎么变成int型输出的那?

http://lake-macquarie.com/weiyu/708.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有