C++ 打印问题。我在打印数组中的值时遇到一些问题

C++ 打印问题。我在打印数组中的值时遇到一些问题,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,每当出现错误时就会发生这种情况 代码的错误是您使用了用于

为什么打印的是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,每当出现错误时就会发生这种情况


代码的错误是您使用了用于打印
双精度
%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()
的输出或退出代码。