【发布时间】:2011-11-15 16:49:17
【问题描述】:
我从不使用逗号运算符。
但有时,当我写一些递归时,我会犯一个愚蠢的错误:我忘记了函数名。这就是为什么返回最后一个操作数,而不是递归调用的结果。
简化示例:
int binpow(int a,int b){
if(!b)
return 1;
if(b&1)
return a*binpow(a,b-1);
return (a*a,b/2); // comma operator
}
是否可能出现编译错误而不是错误、难以调试的代码?
【问题讨论】:
-
这太多了。您希望编译器为您完成所有工作?
-
@Nawaz 我想让编译错误尽可能多。
-
@Nawaz,我假设您会取消所有编译器消息? ;-)
-
"return (a*a,b/2); // 逗号运算符" 那行应该对你尖叫,让你的眼睛燃烧起来。您不需要编译器错误,您只需要阅读该死的行。
-
@SteveLorimer 我明白了。但我认为有必要审查代码,最简单的代码审查就会发现这个错误。
标签: c++ comma-operator