每次我使用“不调试启动”(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/