在我最近写的一个程序中,我遇到了一个非常奇怪的错误,经过大量研究,我仍然无法弄清它为什么发生。我正在使用printf显示一个字符串,然后显示一个整数到stdout。一个什么样子的想法是:

printf("The number of characters on the screen is %d", &numberofchar);


很标准吧?将该变量声明为整数并初始化为1。循环后,该整数将保留正确的值,假设为3,在调试中,我可以确认在printf语句中为该变量分配了该值。

但是,从stdout读取时的输出是一个较大的随机数,例如2530801。

我想了解为什么会发生这种情况,并知道是否有其他选择,例如使用%i可以阻止此错误的发生。我想象它在某种程度上是一个错误,但是我对C的了解并不深。

谢谢您的帮助。

注意:对于在我的程序中使用printf("%d", &int_variable)输出整数的所有实例,都会发生这种情况。所有整数的值始终小于20。

最佳答案

我想象它[sic]某种程度上是堆栈中的错误[...]


是的,有点

带有printf格式说明符的%d期望使用int,而不是指针。Since %i is equivalent to %d%i毫无改善。

采用

printf("%d", int_variable);


代替。

关于c - 使用%d类型强制转换会导致输出错误的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33871992/

10-11 22:55
查看更多