无法理解代码行的输出-

时间:2019-05-31 16:06:26

标签: c return printf expression

我不理解使用return 0*语句吗?

试图在Google上寻找答案

return 0*printf("%d",a[i]);

我不明白结果。

2 个答案:

答案 0 :(得分:1)

那么对我来说

return 0*printf("%d",a[i]);

只是一种不良的编程风格。

至少最好改写

return ( printf("%d",a[i]), 0 );

不说

printf("%d",a[i]);
return 0;

也许此语句是在递归函数中找到的。

关于你的问题

  

难以理解代码行的输出-

然后此行输出整数数组i-th的{​​{1}}元素的值并退出相应的函数。

答案 1 :(得分:0)

TL / DR -将a[i]的值写入标准输出,乘以0写入的字符数,然后返回结果...始终0

我想查看上下文中的其余代码-基于这一行代码没有意义,但也许在上下文中看起来有点荒谬。

printf返回写入输出流的字符数(字节),因此这是将a[i]的值写入标准输出,将写入的字符数乘以0 ,并返回结果... 始终为0 ,因此,再次孤立地显示这一行没有任何意义。

我很难想到一个用例,在这种情况下这是合乎逻辑的,但这并不意味着没有用例。也许作者想要确保即使发生错误也能显示a[i]的值,但为什么不这样做

if ( error_occurred )
{
  printf( "%d", a[i] );
  return 0;
}
在那种情况下?

作者可能打算将print语句与return并发执行,在这种情况下,他们不了解C的工作原理。可能是作者将简洁代码与快速代码混淆了,在这种情况下,他们仍然不了解C的工作原理。

或者也许作者出于棘手的缘故而变得棘手。