下面的C++程序将负1的strtoul
调用。由于没有负数在任何无符号类型中都无法表示,所以我曾期望它会失败并返回0
但是会返回一个很大的正数
#include <cstdlib>
#include <iostream>
int main () {
{char s[] = "-1";
for (int b=0; b<17; ++b)
std::cout << "strtoul (unsigned) of " << s
<< " with base arg " << b
<< ": " << strtoul(s,0,b) << std::endl;}
}
为什么strtoul不会失败并为负数返回0?
最佳答案
您最好将cppreference.com用于documentation,这似乎更加准确:
如前所述,可选的加号或减号是有效符号