如果int x=printf("test");
安全执行,c中没有错误,因为printf
会返回int
值(它打印的数据长度)。但是,如果我们是不存储该整数值:
printf("text");
为什么我们不会收到错误?
答案 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寄存器中。如果你选择忽略它,那么一旦覆盖了这个寄存器就会丢失它。