在我最近编写的一个程序中,我遇到了一个相当奇怪的错误,经过大量研究,我无法弄清楚它为什么会发生。我使用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。
答案 0 :(得分:0)
& 在这里是地址 - 运营商,它会为您提供变量的地址。只需在 printf
中写下变量的名称printf("%d", int_variable);
%d 和%i 都可以用于整数类型变量
现在
printf("The number of characters on the screen is %d", &numberofchar);
假设 numberofchar 是一个整数变量,这里的值未定义为&操作即可。使用
printf("The number of characters on the screen is %d", numberofchar);