问对一个变量进行左移再赋值的程序

[复制链接]
3048|3
 楼主| nanguamache 发表于 2010-10-27 22:18 | 显示全部楼层 |阅读模式
bit a;
char b;
a=1;
b=FFH;
for(int n=0;n<=7;n++)
{ char b=b|a;
    b=b<<1;
}

这样可以使b=1111_1111吗?
ayb_ice 发表于 2010-10-28 08:40 | 显示全部楼层
b本来就是0XFF,再怎么|1还是一样的
可能有些编译器直接就优化掉了
金戈铁马 发表于 2010-10-28 08:51 | 显示全部楼层
char b=b|a
执行后b还是等于FFH吧。1111_1111左移一位,低位应该补零吧
b=1111_1110
john_light 发表于 2010-10-28 08:52 | 显示全部楼层
建议你好好学习C语言,问题不少:
1、C语言中,十六进制值表示为0x??,而不是??H;
2、你这样定义n和b局部变量,注意它的作用范围,它仅在for循环中有效。for循环中的b和上面的b是不同的变量;
3、如<=这样的比较,注意它的边界;
4、如果你想把每位循环置1,则应该先移位后或运算,否则最低一位会被前移变为零。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

53

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部
0