/*
 * @topic Q00720 2/27/2014 the LOGICAL NOT (!) operator
 * @brief demonstrates that result of the ! operator is zero or one
*/

#include <iostream>

void pause()
{
    //----------------------------------------------
    // prevent window from closing before exiting:
    //----------------------------------------------
    char ch; // ch is a variable that holds a character

    // curious \n is a "line feed" control character,
    // it moves the cursor to the next line:
    std::cout << "\nEnter X to Exit: ";

    std::cin.ignore( 1, '\n' ); // extract and discard characters
    std::cin.clear();           // this clears cin state
    std::cin.get( ch ); // this reads a character from the keyboard,
                        // and pauses the program from before exiting
}

int main()
{
    for (;;) {
        int tmp;
        std::cout << "Enter a number or 5 to exit: ";
        std::cin >> tmp;
        if ( tmp == 5 ) {
            break;
        }
        if ( !tmp ) {
            std::cout << "!tmp == " << !tmp << '\n';
        } else {
            std::cout << "!tmp == " << !tmp << '\n';
        }
    }
    pause();
    return 0;
}