Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有以下代码:
char buf[255]; int ID = 0; double val = 1.234; sprintf(buf, "%d@%.3lf", ID, val); printf("%s", buf);
printf()正确打印ID值,但val值只是一些垃圾。你知道是什么导致了这个问题吗?我在 Win7 32 位上使用 MSVC 9。更奇怪的是,上面的代码可以在 64 位机器上正常工作。
printf()
ID
val
提前感谢您的帮助。
在此评论之后:
是的,还有一些额外的代码。这段代码被编译成一个 DLL 库,实际上我在三个地方调用了我的问题中发布的代码,并且只在输出垃圾中的一个地方,如所述。
这可能是由于代码中其他地方的一些问题。您可能在某处损坏了堆栈/堆并无意中覆盖了您的变量。使用内存检查器检查您的代码(valgrind (unix)、CMemLeak(everything))