Computer >> Máy Tính >  >> Lập trình >> C ++

C ++ 17 Câu lệnh if với bộ khởi tạo

C ++ 17 đã mở rộng cú pháp của câu lệnh if hiện có. Bây giờ có thể cung cấp điều kiện ban đầu trong chính câu lệnh if. Cú pháp mới này được gọi là "câu lệnh if với bộ khởi tạo". Cải tiến này đơn giản hóa các mẫu mã phổ biến và giúp người dùng giữ phạm vi chặt chẽ. Do đó, tránh được việc rò rỉ biến ra ngoài phạm vi.

Ví dụ

Giả sử chúng ta muốn kiểm tra xem số đã cho là chẵn hay lẻ. Trước C ++ 17, mã của chúng ta thường trông như thế này -

#include <iostream>
#include <cstdlib>
using namespace std;
int main() {
   srand(time(NULL));
   int random_num = rand();
   if (random_num % 2 == 0) {
      cout << random_num << " is an even number\n";
   } else {
      cout << random_num << " is an odd number\n";
   }
   return 0;
}

Đầu ra

Khi bạn biên dịch và thực thi đoạn mã trên, nó sẽ tạo ra kết quả như thế này -

1555814729 is an odd number

Trong ví dụ trên, chúng ta có thể thấy rằng biến "random_num" bị rò rỉ bên ngoài phạm vi if-else. Chúng ta có thể dễ dàng tránh điều này bằng cú pháp mới "câu lệnh if với bộ khởi tạo".

Dưới đây là cú pháp của "câu lệnh if với bộ khởi tạo" -

if (init; condition) {
   // Do stuff when Boolean condition is true
} else {
   // Do stuff when Boolean condition is false
}

Ví dụ

Bây giờ chúng ta hãy viết mã tương tự bằng cách sử dụng câu lệnh if mới này với trình khởi tạo -

#include <iostream>
#include <cstdlib>
using namespace std;
int main() {
   srand(time(NULL));
   // C++17 if statement with initializer
   if (int random_num = rand(); random_num % 2 == 0) {
      cout << random_num << " is an even number\n";
   } else {
      cout << random_num << " is an odd number\n";
   }
   return 0;
}

Trong ví dụ trên, phạm vi của biến "random_num" được giới hạn trong khối if-else. Do đó, biến này sẽ không thể truy cập được bên ngoài khối này. Đáng ngạc nhiên là nó giữ cho phạm vi biến chặt chẽ mà không ảnh hưởng đến kết quả thực tế.

Đầu ra

Khi bạn biên dịch và thực thi đoạn mã trên, nó sẽ tạo ra kết quả như thế này -

943513352 is an even number

LƯU Ý - Vì chúng tôi đang tạo số ngẫu nhiên nên mỗi lần đầu ra sẽ khác nhau cho mỗi lần chạy ngay cả trên cùng một máy.