函数返回可选值

Moh*_*jan 1 c function

每当我们调用函数返回值时,为什么不需要捕获值?考虑以下C代码,

int main()
{
      int i;
      scanf("%d",&i);
      printf("Value of i is: ",i);
      return 0;
}
Run Code Online (Sandbox Code Playgroud)

这里scanf()返回值1,但因为它没有在任何地方捕获,为什么没有弹出错误?允许这样编程的原因是什么?

Nic*_*ndo 5

返回值的函数具有该功能,以便程序员使用和方便.如果您对返回值不感兴趣,请不要使用它.


Jer*_*fin 5

主要是因为C中的表达式也会产生值.例如:x = 1;产生值1.有时您x = y = 1;会将其用于多次分配,但更常见的情况是不这样做.

在早期的C中,void返回类型也没有被发明,所以每个函数都返回一些值,无论它是否通常有用(例如,你的调用printf也返回一个值).

语言规则不会使这个错误(这样做会失去与几乎现有代码的兼容性),并且由于这很常见并且很少表明存在问题,因此大多数编译器也不会对此进行警告.一些lint工具可以做到,这导致一些误入歧途的程序员编写类似的东西(void)printf("whatever");(例如,将未使用的返回void信号转换为信号,确实它是真的,当它被忽略时是真的有意.但是,这很少有任何好处,并经常确实有点伤害,所以(谢天谢地)它很少见.