- Hands-On System Programming with C++
- Dr. Rian Quinn
- 242字
- 2021-07-02 14:42:38
Initializers in if/switch statements
In C++17, it is now possible to define a variable and initialize it in the definition of an if and switch statement, as follows:
#include <iostream>
int main(void)
{
if (auto i = 42; i > 0) {
std::cout << "Hello World\n";
}
}
// > g++ scratchpad.cpp; ./a.out
// Hello World
In the preceding example, the i variable is defined and initialized inside the if statement using a semicolon (;) inside the branch itself. This is especially useful for C- and POSIX-style functions that return error codes, as the variable that stores the error code can be defined in the proper context.
What makes this feature so important and useful is that the variable is only defined when the condition is met. That is, in the preceding example, i only exists if i is greater than 0.
This is extremely helpful in ensuring that variables are available when they are valid, helping to reduce the likelihood of working with an invalid variable.
The same type of initialization can occur with switch statements as follows:
#include <iostream>
int main(void)
{
switch(auto i = 42) {
case 42:
std::cout << "Hello World\n";
break;
default:
break;
}
}
// > g++ scratchpad.cpp; ./a.out
// Hello World
In the preceding example, the i variable is created only in the context of the switch statement. Unlike the if statement, the i variable exists for all cases, meaning the i variable is available in the default state, which could represent the invalid state.
- 數據庫應用實戰
- ETL數據整合與處理(Kettle)
- 云數據中心基礎
- Hands-On Mathematics for Deep Learning
- Instant Autodesk AutoCAD 2014 Customization with .NET
- 數據修復技術與典型實例實戰詳解(第2版)
- 計算機視覺
- Mastering ROS for Robotics Programming(Second Edition)
- SQL Server 2008寶典(第2版)
- Scratch 2.0 Game Development HOTSHOT
- SQL Server 數據庫教程(2008版)
- 數據庫原理及應用實驗:基于GaussDB的實現方法
- Configuration Management with Chef-Solo
- Managing Software Requirements the Agile Way
- MATLAB基礎及其應用教程