#include<reg52.h>
//#define TL(x) ((1<<16) - x) % 256;
//#define TH(x) ((1<<16) - x) / 256;
#define uint unsigned int
int main( void )
{
本文探讨了在使用Keil编译51单片机程序时,涉及1<<16运算的溢出问题。通过示例代码展示,当1被默认视为16位(int)时,执行1<<16会导致溢出并得到0。为避免此问题,可以使用(long)1<<16。同时指出,在8位单片机中,若左侧表达式能容纳65536,则不会溢出,但uint类型无法存放65536,需要使用long或更高类型。
1604
8032
1535
2221
3268

被折叠的 条评论
为什么被折叠?