您的位置:首页 > 编程语言 > C语言/C++

c语言中为什么左移不分符号数无符号数,而右移分呢??

2016-01-18 23:54 423 查看
因为在C语言标准中,只规定了无符号数的移位操作是采用逻辑移位(即左移、右移都是使用的逻辑左移和逻辑右移)。
而对于有符号数,其左移操作还是逻辑左移,但右移操作是采用逻辑右移还是算术右移就取决于机器了!(算术右移和逻辑右移的区别是:算术右移不右移符号位,即最高位,右移后前补0还是1取决于符号位的值;逻辑右移执行时将移动符号位,右移后前补0)
因此,一个程序如果使用了有符号数的右移位操作,它就是不可移植的了。

http://zhidao.baidu.com/link?url=J_LWILg91_X4iYIkjFdYOL8GNcghyP3YvmiIR4cLZ_qgZcDOYqcqnB1UH8f-XEZy3dsWkShceKwqEUUgRnDk7q&qq-pf-to=pcqq.c2c
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: