C 运行 'Debug' 和 'Start without debug' 时变量的不同答案

标签 c debugging floating-point double

每次我使用“不调试启动”(ctrl-F5) 而不是正常的“调试”(F5) 时,我的代码都会不断收到这种奇怪的输出。

当我尝试在调试(按 F5)模式下找到 norm_differnece 的以下值时,它为我提供了 norm_difference 的正确答案

标准差异 = 1.000000

但是在“不调试的情况下启动”(按 ctrl-f5)错误的输出

normdifference = 1456816083547664100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000

下面是一段给出输出的代码 注意:X[] = 是一个存储 DOUBLE 值的数组

for(i=0;i<n;i++){
    sum_difference += (pow((X[i*n]-X[i]),2));
      }
    norm_difference = sqrt(norm_difference);
for(i=0;i<n;i++){
    sum_norm_1 += pow(X[i],2);
      }
    norm_1 = sqrt(norm_1);
  //Take square root of the sum of squares for the row
    printf("normdifference = %f \n norm_1 = %f \n",norm_difference,norm_1);

最佳答案

可能您正在阅读数组末尾。某些处于 Debug模式的编译器会 zeo 内存,但不会处于 Release模式,因此在调试中错误读取为 0,而在发布中它会获得一些大数

或者根据@Marcelo Cantos,您的变量未初始化 - 在调试中它们可能从 0 开始

关于C 运行 'Debug' 和 'Start without debug' 时变量的不同答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2809620/

相关文章:

python - 将张量值以二进制格式保存到文件的最佳方法是什么?

floating-point - IEEE浮点,如何计算偏差

java - 在 C++ 中读取 float 相当于在 Java 中读取 float

c - 为什么动态分配 char** 和 char* 类型会使用 malloc 段错误?

python - ipdb 中的后续 "list"命令

debugging - 使用 TFS 进行部署使 DEBUG 指令保持打开状态

python - 如何检测 Python 代码正在通过调试器执行?

c++ - 滚动大图像故障的 MSDN 示例

C 多维数组,看不出有什么问题

c - ATMega128 启动时输出闪烁