You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Controls conditional branching. Statements in the if-block are executed only if the if-expression evaluates to a non-zero value (or true). If the value of expression is nonzero, statement1 and any other statements in the block are executed and the else-block, if present, is skipped. If the value of expression is zero, then the if-block is skipped and the else-block, if present, is executed. Expressions that evaluate to non-zero are
true
a non-null pointer,
any non-zero arithmetic value, or
a class type that defines an unambiguous conversion to an arithmetic, boolean or pointer type. (For information about conversions, see Standard Conversions.)
// if_else_statement.cpp
#include <iostream>
using namespace std;
class C
{
public:
void do_somthing(){}
};
void init(C){}
bool is_true() { return true; }
int x = 10;
int main()
{
if (is_true())
{
cout << "b is true!\n"; // executed
}
else
{
cout << "b is false!\n";
}
// no else statement
if (x == 10)
{
x = 0;
}
C* c;
init(c);
if (c)
{
c->do_something();
}
else
{
cout << "c is null!\n";
}
}
if statement with an initializer
Visual Studio 2017 version 15.3 and later: An if statement may also contain an initialization expression, as shown in the following example:
## Example
#include<iostream>
#include<mutex>
#include<map>
#include<string>
#include<algorithm>usingnamespacestd;
map<int, string> m;
mutex mx;
bool shared_flag; // guarded by mxvoidunsafe_operation() {}
intmain()
{
if (auto it = m.find(10); it != m.end())
{
cout << it->second;
return0;
}
if (char buf[10]; fgets(buf, 10, stdin))
{
m[0] += buf;
}
if (lock_guard<mutex> lock(mx); shared_flag)
{
unsafe_operation();
shared_flag = false;
}
string s{ "if" };
if (auto keywords = { "if", "for", "while" }; any_of(keywords.begin(), keywords.end(), [&s](constchar* kw) { return s == kw; }))
{
cout << "Error! Token must not be a keyword\n";
}
}
Remarks
In all forms of the if statement, expression, which can have any value except a structure, is evaluated, including all side effects. Control passes from the if statement to the next statement in the program unless one of the statements contains a break, continue, or goto.
The else clause of an if...else statement is associated with the closest previous if statement in the same scope that does not have a corresponding else statement.