尊敬的工程师:
您好,我在常数运算的时候(为了程序易读,就把运算过程写出来)一个奇怪的现象,不知道是TI编译器的Bug,还是TI编译器的规定。如下运算:
unsigned int data = 0;
data = ((20480*2)/8) - 1;
以上得出data的结果竟然是62463。正确结果应该是5119.
如果是如下表达式:
data = ((40480*2)/8) - 1;
这时得出的结果又是正确的。
不知道是不是Bug,还是TI的编译器在运算的时候对有符号数还有无符号数是有默认的判断规则?那么第二个式子其实中间结果40480*2已经超出了16位无符号数的上限,为什么又能计算正确呢?我使用的芯片是TMS28377S,是不是芯片运算的问题呢?有可能编译器并没有优化这部分。
谢谢!
祝您好心情!
