朋友你好任何人都知道为什么打印变量值为什么不打印垃圾值?它给出了输出11 10 5
void main()
{
int a=5,b=10,c=11;
printf("%d %d %d");
getch();
}
答案 0 :(得分:1)
程序有不确定的行为。
根据C标准
如果格式的参数不足,则行为为 未定义
例如,在www.ideone.com上运行您的功能我得到以下结果
-1081083132 -1081083124 -1219330483
因此,您的编译器似乎生成了对象代码,使得main中的局部变量被偶然调整,使得它们适合printf的堆栈。
答案 1 :(得分:1)
是印刷垃圾。事实是你的垃圾包含值5,10和11,这就是它们被打印的原因。尝试在其他地方执行此代码,或在清理后在自己的机器中执行。
这里,我得到0,10032928,4199093作为输出。
答案 2 :(得分:0)
尝试将printf语句更改为:
printf("%d %d %d", a, b, c)
printf命令的第一个参数称为格式字符串,它告诉运行时如何打印内容。在您的情况下,您声明要打印由单个空格分隔的三个整数。但是,在原始程序中,您没有告诉运行时要打印的值。
您可以将以%(如%d,%c或%f)开头的内容视为占位符,这些占位符将由格式字符串后面的参数填充。这有一些例外,但现在它应该很好地为你服务。
这里要记住两件事;
如果格式字符串中有5个占位符,则需要为printf提供另外五个参数来表示替换这些占位符的数据。这就是来自莫斯科的' Vlad'从C标准中显示出来。
在占位符中编码是预期的数据类型; 即
%c
是一个字符的占位符,并且传递一个浮点数将产生编译器诊断以及运行时的异常行为。
您可以找到更多关于format strings here
的内容