c - 函数返回可选值

标签 c function

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

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

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

最佳答案

主要是因为 C 中的表达式也产生值。例如:x = 1; 产生值 1。有时你将它用于多重赋值,如 x = y = 1;,但更多时候你不这样做。

在早期的 C 中,void 返回类型也没有被发明出来,所以每个 函数都会返回一些值,无论它是否普遍有用(例如,您对 printf 的调用也会返回一个值)。

语言规则不会将此视为错误(这样做会失去与现有代码的兼容性),并且由于这很常见并且很少表示有问题,因此大多数编译器也不会对此发出警告。一些 lint 工具可以,这导致一些误入歧途的程序员编写类似 (void)printf("whatever"); 的东西(即将未使用的返回值转换为 void当它被忽略时,表明它真的、真的是故意的。然而,这很少有任何好处,而且经常造成相当大的伤害,所以(谢天谢地)它很少被看到。

关于c - 函数返回可选值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6961442/

相关文章:

c - 为什么 GCC 会编译这个错误代码?

c - 如何将 char 数组传回 C 上的 main 函数?

javascript - 如何组合两个数组的属性?

c - 在C中迭代结束时打印出迭代数组

c - Xcode 和终端中的不同输出

c - OpenCL,我的 GPU 不可用?

c - 为什么我的音频函数一直循环而不是一直运行?

swift - Swift 4 自定义参数标签是否始终是必需的,或者只是为了消除函数的歧义?

c - 在数组中查找值范围时出错

c++ - kde 固定按钮 API