与FP精度有关的“调试断言失败!” (我不知道为什么会这样)

时间:2019-01-07 16:51:15

标签: winapi visual-c++ visual-studio-2017 precision

好吧,所以我决定做一个WinAPI应用程序,该应用程序在一个圆上绘制模块化乘法,如果乘法器在0到0.1之间(不包括边界),它将崩溃。调试时,会弹出一个错误消息框,提示“调试断言失败!”。和“按重试以调试应用程序”。

(由于我喜欢1个代表点,因此我无法发布图片,但是this is the error message box

当我单击“重试”时,它总是在if else语句处中断执行,因此不会显示任何有用的信息。 if else中评估的内容无关紧要,但是应该将类型FLOAT转换为CHAR *,然后将CHAR *转换为{{1 }}。这是(显然)失败的代码的一部分:

WCHAR *

执行会在此时中断,但由于可能与图形本身有关,因此我包括了在圆上绘制模块化乘法的循环(尽管对我而言似乎不错):

if (useFloat == FALSE)
    _gcvt_s(buff, 7, (multiplier / 100.0f), 4); // multiplier is type size_t (ull)
else                                            // This is where the breakpoint is set.
    _gcvt_s(buff, 7, fMultiplier, 4);           // fMultiplier is type FLOAT

mbstowcs_s(NULL, text, 7, buff, 7);

是的,我完全不知道为什么会这样,我在MSDN,SO和Reddit上阅读了大量的线程,但对于为什么会发生这种情况我仍然一无所知。

0 个答案:

没有答案