- 论坛徽章:
- 0
|
比如下面这个小程序:
- #include <stdio.h>
- unsigned short calcc(unsigned short num){
- unsigned short returnval;
- unsigned short num1;
- unsigned short num2;
- num1=num>>8;
- num2=((num&0x00c0)>>6)*256;
- returnval=num1+num2;
- return returnval;
- }
- int main()
- {
- unsigned short num;
- num=756;
- num>>8;
- printf("%d\n",num>>8); /* 输出结果为2 */
- printf("%d\n",((num&0x00c0)>>6)*256); /* 输出结果为768 */
- printf("%d\n",num>>8+((num&0x00c0)>>6)*256); /* 两个数相加,输出结果为2,为何? */
- printf("%d\n",calcc(num)); /* 这样处理,可以输出正确结果 */
- return 0;
- }
复制代码
768被谁吃了呢?
谢谢。
[ 本帖最后由 hohoxu_hao115 于 2007-5-24 10:58 编辑 ] |
|