为什么printf(“测试”);不会有任何错误?

时间:2016-06-11 11:58:52

标签: c return printf return-value ignore

如果int x=printf("test");安全执行,中没有错误,因为printf会返回int值(它打印的数据长度)。但是,如果我们是不存储该整数值:

printf("text"); 

为什么我们不会收到错误?

2 个答案:

答案 0 :(得分:1)

C中的许多函数都返回了一些东西。程序员是否决定使用该值做任何事情取决于他们 - 并且经常忽略返回代码会导致错误......但是在printf()的情况下,返回值很少有用。它允许使用以下代码:

int width;

width = printf("%d", value); // Find out how wide it was
while (width++<15) printf(" ");
width = printf("%s", name);
while (width++<30) printf(" ");

我不是说这是好的代码(还有其他方法可以做到这一点!),但它描述了为什么函数可以返回一个不经常使用的值。

如果程序员决定忽略返回值,则不存在编译器错误 - 该值仅被遗忘。这有点像买东西,拿到收据,然后放在地板上 - 忽略返回的价值。

可以指示最新的编译器标记忽略返回值的代码。但即使是这些编译器也可以被教导哪些函数的回报是重要的,哪些不是。 printf()将属于第二类。

答案 1 :(得分:0)

您没有义务存储返回的值,您可以放心地忽略它(只要您确定您当然不需要它)。

在大多数情况下,该值只是存储在CPU寄存器中。如果你选择忽略它,那么一旦覆盖了这个寄存器就会丢失它。