完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
main() { unsigned char a[4]= {0x12, 0x34, 0x56, 0x78}; unsigned long i, j; i = (a[0] << 24) + (a[1] << 16) + (a[2] << 8) + a[3]; j = a[0] * 0x1000000 + a[1] * 0x10000 + a[2] * 0x100 + a[3]; return 0; } 我以为 i = 0x12345678, 实际上 i = 0x00005678, 查了半天错,最后改成了第二个式子才得一通过 实在是想不明白,为什么i的值只有低16位 |
|
相关推荐
7个回答
|
|
应该是数据类型的范围限制了。
|
|
|
|
你把数组a定义成long型的就知道哪错了
|
|
|
|
|
|
|
|
|
|
|
|
|
|
谢谢,我已经想明白了,这是C语言的强制数据类型转换,常数默认的是类型是int型 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNK210使用指南 -CanMV版 V1.0》第十一章 FPIOA管理器实验
611 浏览 0 评论
602 浏览 0 评论
659 浏览 0 评论
2093 浏览 1 评论
2225 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11437 浏览 31 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-10 23:53 , Processed in 0.678966 second(s), Total 88, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号