这个得到结果是多少

2019-07-24 15:40发布

a | (b << 8)
其中a和b都是8bit的类型,假设a是1,b是1,得到结果是多少
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
zhaoxqi
1楼-- · 2019-07-26 09:26
根处理器没关系阿!都去验证一下,跟处理器没关系的,就是处理器是32位的,b<<8,unsigned char类型,那就是0,难道说处理器是32位的,那b就是0x00000001,怎么可能阿!
午夜粪车
2楼-- · 2019-07-26 14:01
我想知道为什么a是1就不去执行b<<8了
wyjie
3楼-- · 2019-07-26 14:09

单纯看这一句语句,意义不大。
应该看下用在哪个地方,如果是if(a | (b << 8)),当a是1时,后面不会执行。当为条件已经成立,不用再管后面的结果了。

但如果是赋值语句,c =a | (b << 8)
则后面的b<<8会被执行。
虽然b是8bit类型,左移8位,其值为0,但要注意,编译器会不会使用类型转换,将其转为16位或32位,那个左移8位就有意义了。不然左移8位,其值是会为0的。
jiajs
4楼-- · 2019-07-26 16:24
 精彩回答 2  元偷偷看……
jiajs
5楼-- · 2019-07-26 21:59
但如果是赋值语句,c =a | (b << 8),虽然b是8bit类型,左移8位,其值为0,所以结果为1
yszong
6楼-- · 2019-07-26 23:01
明白了,<<是循环左移,所以b左移8位后是其本身,结果是1。

一周热门 更多>