完善资料让更多小伙伴认识你,还能领取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,所以你第一个的结果也不一定正确
|
|
|
|
只有小组成员才能发言,加入小组>>
3309 浏览 9 评论
2988 浏览 16 评论
3490 浏览 1 评论
9050 浏览 16 评论
4084 浏览 18 评论
1168浏览 3评论
601浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
592浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2329浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1892浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 08:11 , Processed in 1.263965 second(s), Total 88, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号