yzwzfyz 发表于 2019-6-18 08:23 谢谢大佬指导 |
suncat0504 发表于 2019-6-17 22:39 谢谢大佬指教,我试试 |
写程序时应尽量回避不确定的因素,因为你不能确定编译平台是如何编译它的。 本例:如果先移位,后转换。则16位的数制,移不出个32位的结果,多余则溢出丢弃。 如果先转换,后移位则是可以的。 既然你不能确定,就分两步一定要处理,一步先转换,再一步进行移位。 学会规避不确定的因素,以保证正确率。 |
涉及到指针的操作了,一定要小心,指针指向什么类型,意味着占用存储空间的不同。不如char行占用一个单元(字节单位),两位的整形,占用两个单元。用指针赋值的时候,会根据指针的类型,从内存中取出对应长度的单元,组织成数据,然后赋值给接受对象。当有不同类型之间的赋值时,就涉及到自动转换的问题。小往大转,问题不大(但也涉及有符号时的出现问题)。大往小转,会丢数据。另外数据类型占用内存单元,还涉及高位、低位的存储顺序,这个也一定要考虑,很重要。 你想要正确的结果,不如直接用time5=time1*256+time2;类似这样的计算来得可靠。 |