在我最近编写的一个程序中,我遇到了一个相当奇怪的错误,经过大量研究,我无法弄清楚为什么会发生这种情况。我使用 printf 将一个字符串后跟一个整数显示到标准输出。大概的想法是:
printf("The number of characters on the screen is %d", &numberofchar);
变量被声明为整数并初始化为 1。循环后,整数保持正确的值(假设为 3),在调试中我可以确认在 printf 语句中为变量分配了该值。
但是,从 stdout 读取时的输出是一个很大的随机数,例如 2530801。
我想了解为什么会发生这种情况,并知道是否有任何替代方案,例如使用 %i
阻止此错误的发生。我想象它是堆栈中的一个错误,但我对 C 的了解不太深入。
感谢您的帮助。
注意:在程序中使用 printf("%d", &int_variable)
输出整数的所有实例都会发生这种情况。所有整数的值始终小于 20。
最佳答案
I imagine its [sic] an error somehow in the stack [...]
是的,有点。
带有%d
格式说明符的 printf
需要一个 int
,不是一个指针。
Since %i
is equivalent to %d
,%i
不会有任何改进。
使用
printf("%d", int_variable);
相反。
关于c - 使用 %d 类型转换导致输出不正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33871992/