Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Câu lệnh Else và Switch có bộ khởi tạo (initializers) trong C++17


Thường ta cần kiểm tra giá trị trả về từ hàm và thực hiện điều kiện. Code truyền thống:

auto var1 = foo(Params);
if (var1 == /* giá trị */) { /* làm gì đó */ }
else { /* làm gì đó khác */ }

Định dạng chung: câu lệnh khởi tạo (init-statement) theo sau là if-else.

init-statement
if (condition) { ... } else { ... }

C++17 cho phép đưa init-statement trực tiếp vào if (gọi là initializer):

if (init-statement; condition) { ... } else { ... }

Phạm vi biến điều kiện bị giới hạn trong khối if-else, cho phép tái dùng tên biến trong khối khác.

if (auto var1 = foo(); condition) { ... } else { ... }
if (auto var1 = bar(); condition) { ... } else { ... }

Tương tự, switch cũng được cập nhật:

switch (init-statement; variable) { ... }

Chương trình minh họa đầy đủ

// Demo init if-else C++17
#include <iostream>
#include <cstdlib>
using namespace std;

int main() {
    srand(time(NULL));
    // Trước C++17
    int I = 2;
    if (I % 2 == 0) cout << I << " is even number" << endl;
    // C++17
    if (int I = 4; I % 2 == 0) cout << I << " is even number" << endl;
    // Switch với initializer
    switch (int I = rand() % 100; I) {
        default: cout << "I = " << I << endl; break;
    }
}