在我最近写的一个程序中,我遇到了一个非常奇怪的错误,经过大量研究,我仍然无法弄清它为什么发生。我正在使用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/