c++ - 可以在表达式中使用 void 返回函数吗

标签 c++ c

随附的是我计划在我的代码中使用的代码片段

void error(const char *text)
{
   printf("Error: %s\n", text);
}

int isvalid(int stuff)
{
   if (stuff < 0)
      return (error("Less than zero"), 0);
   else
      return 1;
}

这是好的还是坏的编码?

return (error("小于零"), 0)在我的编译器中没有报告错误

(Borland C++ V5.0 运行时)

最佳答案

您所做的在语法和语义上都是有效的,因为逗号运算符会计算每个子表达式并丢弃除最后一个1之外的所有结果。

但这太不惯用了,让人很受伤。只需写两条语句即可。您由此获得的唯一奖励是代码混淆。

<小时/>

<子> 1 - 您标记了 C++,所以当然有一个警告。运算符(包括逗号)可以重载。如果这是一个模板,则在实例化模板之前无法判断其格式是否良好。你必须克服一些困难才能解决它。

关于c++ - 可以在表达式中使用 void 返回函数吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46630851/

相关文章:

c++我可以用double初始化一个float类型的变量吗?

c++ - 链表中的结构

无法将数组值带入函数

C:如何从文件加载列表并将其保存在程序末尾

c++ - 正确分配的数组上出现段错误

c++ - 在 C 或 C++ 中的空行后开始打印

java - 可访问、跨平台、相关的 UI 框架?

c++ - 如何使用适当的 what() 函数补充 boost::exception

c++ - gethostbyaddr() 返回 null

c++ - 你能让 Visual Studio 2005 为你的启动程序提供命令行参数吗?