scon = 0x52; /* scon */ /* setup serial port control */
tmod = 0x20; /* tmod */ /* hardware (2400 baud @12mhz) */
tcon = 0x69; /* tcon */
th1 = 0xf3; /* th1 */
a=12345;
b=100;
z=(long)(a*b);
printf (" z=%ld\n",z);
}
结果应该是1234500;可是显示确是54852;?
z=(long)(a*b);
a*b 已经溢出然后再把它转换成Long的已经没有意义!
必须在计算前就转换,a,或b 都可以!
你可以这样做做实验,
z=(long)a*b; //转换a 为long ;编译器自动把 a*b转换成long型的运算!
z=a*(long)b; //同样的道理;
结果都是1234500.