这两行代码中显式和隐式类型转换有什么区别?
char a; char b; char c; a = b + c; a = (char)((int)b+(int)c); 在第一行中,它涉及从char到int的转换.在第二行,它是明确的.编译器生成的二进制文件有区别吗? 请从嵌入式系统的角度考虑这个问题. 解决方法
我对该标准的阅读表明,这取决于实现和优化器.
第5.1.2.3节,第10部分:
char c1,c2; /* ... */ c1 = c1 + c2;
我的理解是标准允许编译器决定是否可以使用8位加法,只要结果不能与添加整数和转换为字符区分开来. 回到我在嵌入式世界(九十年代中期)的日子里,我们用于8位平台的C编译器,用于68HC11的Whitesmith编译器,产生了一个用于添加两个字符的“普通”8位加法指令.找出你的fujitsu系统中发生的事情的唯一方法是编译到汇编并自己检查. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |