awe*_*ata 3 c++ linux gcc compiler-warnings suppress-warnings
我从 C++ 开始并收到此警告:
\n../src/loop.cpp:23:6:警告:\xe2\x80\x98bool的地址almostComparison(double, double)\xe2\x80\x99永远不会是NULL [-Waddress]
\n任何人都可以向我解释为什么会这样吗?如果意图只是比较返回 true 或 false?
\n我一直在研究其他问题,但答案太先进了,我无法理解发生了什么。谢谢你帮助我:)
\n#include <iostream>\n\nusing namespace std;\n\nbool almostComparison(double number1, double number2) {\n    if (number1 + 1 == number2 || number2 + 1 == number1) {\n        return true;\n    }\n    return false;\n}\n\nvoid numberComparison(double number1, double number2) {\n    if(number1 < number2) {\n        cout << "the smaller value is: " << number1 << '\\n';\n        cout << "the larger value is: " << number2 << '\\n';\n        if(almostComparison) {\n            cout << "the numbers are almost equal!" << '\\n';\n        }\n    } else if (number2 < number1) {\n        cout << "the smaller value is: " << number2 << '\\n';\n        cout << "the larger value is: " << number1 << '\\n';\n    } else {\n        cout << "the numbers are equal" << '\\n';\n        cout << "Number1: " << number1 << '\\n';\n        cout << "Number2: " << number2 << '\\n';\n    }\n}\n\nint main() {\n\n    bool condition = true;\n    double number1 = 0;\n    double number2 = 0;\n\n    while(condition) {\n        cin >> number1;\n        cin >> number2;\n\n        if(cin.fail()) {\n            condition = false;\n        } else {\n\n            numberComparison(number1, number2);\n\n        }\n    }\n\n    return 0;\n}\nif(almostComparison) {
这会测试函数的地址,该地址始终为非 NULL。你想像这样实际调用该函数:
if(almostComparison(number1, number2)) {