所以这个听起来很容易,但我得到一些奇怪的行为。
在我的程序中有以下代码:
std::cout << "Would you like to generate a complexity graph or calculate global complexity? (graph/global)\n";
char ans[6];
std::cin >> ans;
if (ans != "global") std::cout << ">>" << ans << "<<" << std::endl;
当我运行程序并在提示输入时键入“global”时,程序返回:
>>global<<
为什么if语句的评估结果为true
?
答案 0 :(得分:3)
答案 1 :(得分:0)
您将ans
声明为char数组,因此如果if (ans != "global")
表达式,ans
表示指向字符串开头的指针。所以你比较两个显然不相等的指针,你的表达式求值为true。如果您仍想将ans
声明为C风格的字符串,则可以在比较之前从中构造std::string
:
if (std::string(ans) != "global") {......}
或者只需将ans
声明为std::string
而不是char[]
。