在我最近编写的一个程序中,我遇到了一个相当奇怪的错误,经过大量研究,我无法弄清楚它为什么会发生.我使用printf显示一个字符串,后跟一个整数到stdout.这看起来像是一个想法:
printf("The number of characters on the screen is %d", &numberofchar);
Run Code Online (Sandbox Code Playgroud)
很标准吧?该变量被声明为一个整数并初始化为1.循环后,整数保持正确的值,例如3,在调试中我可以确认变量在printf语句中赋值.
但是从stdout读取时的输出是一个很大的随机数,例如2530801.
我想了解为什么会发生这种情况并知道是否有任何替代方案,例如使用%i阻止此错误发生.我想象它在堆栈中的某种错误,但我对C的了解并不是太深入.
谢谢您的帮助.
注意:这适用于所有printf("%d", &int_variable)用于在程序中输出整数的实例.所有整数的值总是小于20.
我想象它[sic]在某种程度上是一个错误[...]
是的,有点儿.
printf与%d格式说明期望一个int,不指针.
既然%i相当于%d,%i就没有任何进步.
使用
printf("%d", int_variable);
Run Code Online (Sandbox Code Playgroud)
代替.