=38。因为a+b+c=97+98+99=294。但i是char型,所以把294赋给i时会自动把向8位以上的进位舍弃,只取低8位,这样就成38了,相当于对256取模。
数据会不准确
?1.串口通信你按9600,n,8,1 即8位数据(2进制 2的8次方0-255)最大就是0xff即10进制的255。
?2.如果出现大于255的数据比如256,那么就是0x100。而你接收端只接收到00了。
?3.所以如果发送超过255的数据需要用2个8位寄存器 超过65535就要3个8位寄存器。
?4.然后在接收侧采用比如R0,R1 ,R0是低8位R1是高8位。
?5.c的话就需要定义一个合适的寄存器大小比如255以内是char
注意,你定义的是unsigned char ,即无符号字符型,最大数是255,不是127,定义成char型(没有unsigned)才是127。
好,回到你程序上来,变量 i , j 都是无符号字符型,你程序中循环语句的变量值都超过了255,但是,编译时并不报错的,还是给你编译了。可等你运行程序,就发现有问题了,那循环次数不对啦,最多是255次。所以,编译不报错,不等于程序就是全对的,需要运行程序来验证的。
单片机char如果超过255的介绍就聊到这里吧,感谢您花时间阅读,谢谢。
本文标签:单片机char如果超过255