随附的是我计划在我的代码中使用的代码片段
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/