写了一个51单片机的程序,但是运行不正常,使用网络在线编译的工具验证了一下,发现不对,程序如下截图:
程序中x的值我设置为0xa5,然后听过一个按位或运算,根据x的值,经过一个8次循环后,dat的值应该和x的值一样才对,但是实际运行结果打印出来不对,不知道问题出在哪里。
我已经把每此经过移位后的数据打印出来了,提供给你们分析。
完整的程序应该是:
#include <stdio.h> int main(){ unsigned char i=0dat=0x=0xa5; for(i=0;i<8;i++){ if( x & 0x01 ){ dat = dat | 0x80; } dat= dat>>1; x= x>>1; printf(" dat 等于:0x%X\r\n"dat); printf(".......x 等于:0x%X......\r\n"x); } return 0; }