端口操作程序问题
(2011/10/8 9:31:00)
//嘿嘿
voidmain()
{
unsignedcharx,y;
unsignedinta,b;
P0=0xdb;
x=(~P0)|0x80;
y=~P1;
a=(((~P0)|0x80)<<8)|(~P1);//a会是多少呢?
//^-----x----^^-y-^
b=(x<<8)|y;//b会是多少呢?
}
//运行结果:a=0xFF00;b=0xA400。解释一下,why?
网友评论:程序写多了后,你就会不太记得这些自动类型转换的规则了,所以强制转换是必要的,还有有些数据类型在不同编译器种会有差异,在调试时留意一下就好,写程序可能容易,但调试的技巧就不是一两句话能说的清了。
还有,程序多几行,少几行其实没什么关系的,你就是把它写在一行里,也不见得就是最优的。
网友评论:学