# C++: A syntax constraint when defining variables in the statements of if, while and switch

Yao Yao on March 16, 2015
• Published in category
• C++

You can also define variables inside the control expressions of for loops and while loops, inside the conditional of an if statement, and inside the selector statement of a switch.

for (int i = 0; i < 10; ++i) 这种是最常见的。其实 if, whileswitch 的括号里都可以定义变量，举个 switch 的例子：

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;
}


Although the example also shows variables defined within while, if, and switch statements, this kind of definition is much less common than those in for expressions, possibly because the syntax is so constrained. For example, you cannot have any parentheses. That is, you cannot say:

while((char c = cin.get()) != 'q') { // ERROR
...
}