Both expresions from a reference book (www.bogotobogo.com/cplusplus/files/ThinkingInCPlusPlusVolumeOne.pdf) I tried but work badly, looks like reads keyboard but nor c neither x got the value of the key pressed. Editor (VS 2019 Win 10) don't identify as mistake, debugger reveals that c or x don't receive the value.
full sample program is:
//: C03:OnTheFly.cpp
// On-the-fly variable definitions
#include <iostream>
using namespace std;
int main()
{
//.. { // Begin a new scope int q = 0; // C requires definitions here
//.. // Define at point of use:
for(int i = 0; i < 100; i++)
{
q++; // q comes from a larger scope
// Definition at the end of the scope:
int p = 12;
}
int p = 1; // A different p
} // End scope containing q & outer p
cout << "Type characters:" << endl;
while(char c = cin.get() != 'q')
{
cout << c << " wasn't it" << endl;
if(char x = c == 'a' || c == 'b')
cout << "You typed a or b" << endl;
else
cout << "You typed " << x << endl;
}
cout << "Type A, B, or C" << endl;
switch(int i = cin.get())
{
case 'A': cout << "Snap" << endl;
break;
case 'B': cout << "Crackle" << endl;
break;
case 'C': cout << "Pop" << endl;
break;
default: cout << "Not A, B or C!" << endl;
}
}
///:~
Is some problem of version of C++ ? I tried with dafault option for C++ version ant also with C++11, C++14, C++17.