下面的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,这似乎更加准确:



如前所述,可选的加号或减号是有效符号

09-07 07:30