完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
//#define TL(x) ((1<<16) - x) % 256;//#define TH(x) ((1<<16) - x) / 256;#define uint unsigned intint main( void ){ uint a, b, c, d; //a = (1 << 2);//d = 9 % 2;//b = (~0) - 1;a = (65536 - 250) / 256; //这里1 a = ((1<<16) - 250) / 256; //还有这里2//c= ((1<<16) - 250) % 256; //c输出正确。。。return 0;} 很郁闷为什么1输出结果正确而2输出结果是0啊。。。1<<16不是65536么,不是一样的么。。? 今天早上莫名其妙地因为这个问题困惑了好久,求解 |
|
相关推荐
6个回答
|
|
应该是1<<16位超过了uint的位了,你这里是17位了吧。不行的
|
|
|
|
可能编译器默认的是16位而你这样移位的话就溢出了 (long)1<<16这样试试
|
|
|
|
1<<16不是65535吧,应该是10000啊,超出unsigned int的范围了,所以当做0来处理了
老规矩,***法(unsigned long)(1<<16)这样试下结果怎么样 |
|
|
|
把a定义为unsigned long int型的,试试看,应该就可以了
|
|
|
|
后面加个L试试
|
|
|
|
一个是1<<16超范围了,1本身就是1位,再移16位总共就是17位了,另外就算按你的意思不超范围,1<<16也是32768,而不是65535,所以你第一个的结果也不一定正确
|
|
|
|
只有小组成员才能发言,加入小组>>
3148 浏览 9 评论
2841 浏览 16 评论
3349 浏览 1 评论
8735 浏览 16 评论
3944 浏览 18 评论
9563浏览 3评论
905浏览 3评论
466浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
465浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2187浏览 2评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-28 12:15 , Processed in 0.713745 second(s), Total 87, Slave 68 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号