布尔永远不会为NULL [-Waddress]

问题描述

我从C ++开始,并收到以下警告:

../ src / loop.cpp:23:6:警告:“ bool nearComparison(double,double)”的地址永远不会为NULL [-Waddress]

任何人都可以向我解释为什么?如果目的只是为了比较返回真还是假?

我一直在研究其他问题,但是答案对我来说太高级了,无法理解发生了什么。感谢您的帮助:)

#include <iostream>

using namespace std;

bool almostComparison(double number1,double number2) {
    if (number1 + 1 == number2 || number2 + 1 == number1) {
        return true;
    }
    return false;
}

void numberComparison(double number1,double number2) {
    if(number1 < number2) {
        cout << "the smaller value is: " << number1 << '\n';
        cout << "the larger value is: " << number2 << '\n';
        if(almostComparison) {
            cout << "the numbers are almost equal!" << '\n';
        }
    } else if (number2 < number1) {
        cout << "the smaller value is: " << number2 << '\n';
        cout << "the larger value is: " << number1 << '\n';
    } else {
        cout << "the numbers are equal" << '\n';
        cout << "Number1: " << number1 << '\n';
        cout << "Number2: " << number2 << '\n';
    }
}

int main() {

    bool condition = true;
    double number1 = 0;
    double number2 = 0;

    while(condition) {
        cin >> number1;
        cin >> number2;

        if(cin.fail()) {
            condition = false;
        } else {

            numberComparison(number1,number2);

        }
    }

    return 0;
}

解决方法

if(almostComparison) {

这将测试函数的地址,该地址将始终为非NULL。您实际上想这样调用函数:

if(almostComparison(number1,number2)) {