c - 使用 %d 类型转换导致输出不正确的值

标签 c casting printf

在我最近编写的一个程序中,我遇到了一个相当奇怪的错误,经过大量研究,我无法弄清楚为什么会发生这种情况。我使用 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/

相关文章:

基于非 IEEE 754 : is such C compiler C standard compliant? 的 C 编译器的 FP

根据变量的值更改 printf() 中的文本

java - 基于内部映射的通用返回类型?

r - R 中的 Sprintf 不计算变音

c - scanf 和 printf size_t 变量的正确方法(平台无关)

异或交换会导致溢出吗?它是否适用于 float ?

c - 如何在 C 中使用 libevdev 生成键盘输入

php - 代码替换

java - 获取集合对象的值

c++ - 设置精度和裁剪尾随零但从不打印指数