关于 C 语言 移位操作的一个小问题举个例子,我在Turb C 中写入一段关于位操作的程序#include "stdio.h"void main(){int x;unsigned char y,z; x = 999; // 999(d) = 03E7(H)y = x >> 8;z = x;printf("x = %x y =%x z = %x",x,y,z)
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/17 06:00:56
关于 C 语言 移位操作的一个小问题举个例子,我在Turb C 中写入一段关于位操作的程序#include "stdio.h"void main(){int x;unsigned char y,z; x = 999; // 999(d) = 03E7(H)y = x >> 8;z = x;printf("x = %x y =%x z = %x",x,y,z)
关于 C 语言 移位操作的一个小问题
举个例子,我在Turb C 中写入一段关于位操作的程序
#include "stdio.h"
void main()
{
int x;
unsigned char y,z;
x = 999; // 999(d) = 03E7(H)
y = x >> 8;
z = x;
printf("x = %x y =%x z = %x",x,y,z);
}
运行的结果为 x = 03e7 y = 03 z = e7
我有些疑惑 为什么 z 的值 等于e7,x进行位运算后不是应该等于03,我认为z值应该跟y值相等 (我的想法是错误的),为什么 z 等于e7 而不是03
关于 C 语言 移位操作的一个小问题举个例子,我在Turb C 中写入一段关于位操作的程序#include "stdio.h"void main(){int x;unsigned char y,z; x = 999; // 999(d) = 03E7(H)y = x >> 8;z = x;printf("x = %x y =%x z = %x",x,y,z)
y = x >> 8;
是将 x 右移 8 位后保存到 y,此时 y 变成 03,但 x 的结果仍然是 03E7.所以当 z = x; 就相当于要把 03E7 放到 1 个字节的 z 变量里,发生了截断,z 等于 e7.