博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言位操作时注意变量数据类型
阅读量:6407 次
发布时间:2019-06-23

本文共 318 字,大约阅读时间需要 1 分钟。

hot3.png

如果要用4个单字节字符变量来填充1个整型变量可以这样做:

int a=0;char b[4];for(j=0; j<4; j++){  a |= b[j]《(8*j);}

 但这样做结果是不对的,因为b为char类型数组,为有符号数。而a为整型,因此b[j]首先会进行符号位扩展。

  如果b[j]的高位为1,则在左移之前首先将高字节都扩展为ff。因此最终结果不正确。

  将数组b定义为无符号字符数组即可:

int a;unsigned char b[4];for(j=0; j<4; j++){  a |= (b[j])《(8*j);}

转载于:https://my.oschina.net/gaosheng/blog/276773

你可能感兴趣的文章
Oracle配置的一些经验
查看>>
[翻译] EF Core in Action 关于这本书
查看>>
js Uncaught TypeError: undefined is not a function
查看>>
数据库存储引擎
查看>>
登录注册界面的传值
查看>>
如何修改计算列列名
查看>>
[2019.2.13]BZOJ4318 OSU!
查看>>
版本号带两个小数点的,如何比较大小?( NSStringCompareOptions )
查看>>
HashMap与HashCode
查看>>
QCustomplot使用分享(三) 图
查看>>
什么是java?
查看>>
office等资料下载
查看>>
[LeetCode]题解(python):149-Max Points on a Line
查看>>
WPF路径动画(动态逆向动画)
查看>>
ESXi 主机创建datastore失败
查看>>
day3-函数介绍
查看>>
Low Level Reader Protocol (LLRP) 简介
查看>>
[Micropython]TPYBoard v10x NRF24L01无线通讯模块使用教程
查看>>
mysql中show processlist过滤和杀死线程
查看>>
dxRangeTrackBar使用教程
查看>>