C语言 按位移动 向左移位 和书上的不一样 程序是加一位 书上写的是移一位

程序运行的结果

书上的结果
255 1 254
255 2 252
255 3 248
255 4 240
255 5 224
255 6 192
255 7 128

书上的y是unsigned char类型(或者是通过unsigned char类型的值赋值得到),只有1个字节。
你写的y是unsigned int类型,有4个字节。追问

照书上的打的 就是int 要不就是书上写错了 那为什么下面的 能正确

追答

下面的是右移,右移不管几个字节结果都是对的,左移如果是如果位数不足会舍弃,你把y改成unsigned char类型就跟书上的结果一样了。
255=(11111111)
左移一位是(111111110)=510
但如果这个整数只有一个字节,结果就少一个1变成(11111110)=254.

温馨提示:答案为网友推荐,仅供参考
相似回答