我正在尝试调试与此特定代码无关的问题,并且正在寻找线索,线索是“该计数器可能具有什么值?” 以下代码行
sprintf(strAtLeast10long, "%lld%c%.02uP",
input/peta, decimal, (long)((input%peta) / (peta/hundred)));
正在为输出生成“0.00P”。
这是我对参数的了解。输入是unsigned long long
一个值 >= (10^12 - (10^7 / 2)) 的值。decimal = '.'
static const long long hundred = 100;
static const long long peta = 1000000000000000ULL;
是的,我知道这"%lld"
会更好"%llu"
,我会解决这个问题。
但与此同时,我正在寻找有关输入内容的线索。问题发生在客户身上,我们不知道如何重现它,因此添加调试代码或使用调试器不是一种选择。
编译器是 IBM z/OS C++ 编译器。在你们翻白眼之前,“EBCDIC 是魔鬼的杰作!” 它是符合 Posix 的 C++ 编译器和环境。