工具与软件:
我一直在追逐计算误差、并将其范围缩小到具有 unsigned long (int32_t)的问题。
以下是调试器观察窗口中的简单代码和一幅图像。
长 temp32;
temp32s =(长) 1;
temp32s =(long) temp32s *(long) 256;
我预计结果是256、而不是 4194304

This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
我一直在追逐计算误差、并将其范围缩小到具有 unsigned long (int32_t)的问题。
以下是调试器观察窗口中的简单代码和一幅图像。
长 temp32;
temp32s =(长) 1;
temp32s =(long) temp32s *(long) 256;
我预计结果是256、而不是 4194304

我在代码集中提供了上述 ADC 样本、但从未在示例中使用过。
为了使编译器能够实际编译"temp32s"值、必须使用返回 temp32s。
int32_t temp32;
int16_t raw1;
raw1 =(int16_t)(GetADC10Sample (ADC_TEMPERATURE)& 0x03FF);
temp32s =(长) 1;
temp32s =(long) temp32s *(long) 256;
返回 temp32;
我在发布我的问题后进行了一些互联网研究、发现了以下问题:
它支持您关于"优化器"的评论。 我还发现、 当一个新项目被创建时、CCS 版本:12.2.0.00009缺省为一些优化。
优化和压缩("Properties">"CCS Build">"Optimization")
默认情况下、Code Composer Studio 会将:
将 "Optimization level (--opt_level、-O)"更改为"Off (关闭)"后、问题就消失了。
为什么编译器会产生这个问题呢?