C++ 打印问题。我在打印数组中的值时遇到一些问题
为什么打印的是0而不是6C++ 打印问题。我在打印数组中的值时遇到一些问题,c++,printf,C++,Printf,为什么打印的是0而不是6 main(void) { int i, j; int T[3][3] = {{5,1,3},{3,5,6},{5,6,3}}; printf("%f", T[1][2]); return 0; } 您通过传递printf()错误的类型调用了未定义的行为,结果是偶然得到的 %f用于打印double,而不是int。要打印int,您应该使用%d它不是打印零,实际上,它返回0,每当出现错误时就会发生这种情况 代码的错误是您使用了用于
main(void) {
int i, j;
int T[3][3] = {{5,1,3},{3,5,6},{5,6,3}};
printf("%f", T[1][2]);
return 0;
}
您通过传递printf()
错误的类型调用了未定义的行为,结果是偶然得到的
%f
用于打印double
,而不是int
。要打印int
,您应该使用%d
它不是打印零,实际上,它返回0,每当出现错误时就会发生这种情况
代码的错误是您使用了用于打印
双精度的%f
,因为您有以int
形式输入的,所以需要使用%d
。这将解决错误,因此不会返回0
未定义的行为%f
告诉printf()
期望一个double
,但是您的代码传递了一个int
。请改用%d
格式。重复一次或多次。此外,主()/<代码>必须返回<代码> int >代码>。如果您真正使用C++,正如您的标记所暗示的(而不是按照您的代码建议的那样),可以使用IoFixes或库来避免将<代码> Prtff< /Cult>说明符匹配到参数类型。您需要有关环境的信息,例如int
和double
的大小,以及ABI(如何传递整数和浮点参数)。这是错误的。返回代码0
表示成功。甚至还有一个标准的宏:EXIT\u SUCCESS
。此外,如果“error”的定义含糊不清,那么C不能保证返回一个实际上会指示失败的代码,因为这有可能误导新手,使他们认为运行时可以避免出错。由于格式说明符错误,程序有未定义的行为,但这并没有说明它将返回什么。这种行为没有定义。0
的值不能保证作为printf()
的输出或退出代码。