我终于发现了程序中的一个错误,该错误是由返回类型的隐式类型转换引起的。即使g++ -Wall
对此没有任何警告。
我想知道是否有什么办法可以快速找出这种无意识的错误?
#include <iostream>
// return type should be int, but I wrote bool by mistake
bool foo(int x) {
return x;
}
int main() {
for (int i = 0; i < 100; ++i) {
std::cout << foo(i) << std::endl;
// 0 1 1 1 1 1 ..
// should be 0 1 2 3 4 ...
}
return 0;
}
这是正确的代码。如果 (i) 其中i
有类型int
也是正确的。
n3376 4.12/1
算术、无范围枚举、指针或指向成员类型的指针的纯右值可以转换为
bool 类型的纯右值。零值、空指针值或空成员指针值将转换为 false;
任何其他值都会转换为 true。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)