c语言中算数运算中可以有十进制和16进制的混合运算吗?

例如:
void BCD_ASCII(uchar BCD,uchar ptasc[])
{
ptasc[0]=BCD/16|0x30; //0X58 35 38 //转换十位
ptasc[1]=BCD&0x0F|0x30; //转换个位
}
假如BCD赋予 0X58 那么 “BCD/16”是把BCD转为十进制再除16;还是把16转为十六进制再和0X58运算?
谢谢啦~

能混合运算的 ,一般转化为 十进制 。C应该会自动转换
char 和 int 型一起运算时会将 char 先变为 int 型 。
其他转换 都是 从占内存小的 转到 占内存大的 。
char ==>> int ==>> float ==>> double 。
而且 float 及double 赋值时 ,应为 float fLine = 2.0 ; 最好不要省略小数点及后面的0 。
书上一般有介绍 。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-06
我想,结果可能不会错把,,电脑运算都是2进制运算的。。都是转化成2进制进行运算的(电脑只能识别2进制),结果对不对,就不知道,你自己可以试试
第2个回答  2011-04-06
问题不在于进制转换,而是强制类型装换。
BCD(uchar) 16(int) -> BCD(int)也就是所谓十进制
然后BCD(int)|0x30->int
uchar p[0]=(uchar)int
而下面的由于都是uchar所以不发生转换

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网