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}\n
Run Code Online (Sandbox Code Playgroud)\n
if(almostComparison) {
Run Code Online (Sandbox Code Playgroud)
这会测试函数的地址,该地址始终为非 NULL。你想像这样实际调用该函数:
if(almostComparison(number1, number2)) {
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1668 次 |
最近记录: |