关于VC6.0中的移位操作符与标准不同
本来C/C++标准中使用移位操作符之后出现的空位是填0的
为什么在VC6.0中的移位操作符出现空位之后填1?
我本来今天在写一个base64的加密小程序,结果发现在加密中文的时候老出错
后来才发现是移位错了
比如11010010向右移4位本来应该为00001101的
但是为什么在我的VC6.0中变成了11111101了?
什么情况?求大神解答
[解决办法]
向右移需考虑符号问题,否则就会出错,比如对-2>>1,应该等于-1,如果不考虑符号位,那成什么了?
如果你想左边补0,必须用无符号来移位。
虽然vc6不怎么标准,但也不至于出这么严重的错误,不要轻易怀疑一个东西,虽然它很老,但用了10多年了。