Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

C++17 คำสั่ง if พร้อมตัวเริ่มต้น


C ++ 17 ได้ขยายที่มีอยู่ if ไวยากรณ์ของคำสั่ง ตอนนี้สามารถระบุเงื่อนไขเริ่มต้นภายในคำสั่ง if เองได้ ไวยากรณ์ใหม่นี้เรียกว่า "if statement with initializer" การปรับปรุงนี้ช่วยลดความซับซ้อนของรูปแบบโค้ดทั่วไป และช่วยให้ผู้ใช้รักษาขอบเขตให้แคบลง ซึ่งจะช่วยป้องกันไม่ให้ตัวแปรรั่วไหลออกนอกขอบเขต

ตัวอย่าง

สมมุติว่าเราต้องการตรวจสอบว่าจำนวนที่กำหนดเป็นเลขคู่หรือคี่ ก่อน C++17 โค้ดของเราเคยเป็นแบบนี้ -

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

ผลลัพธ์

เมื่อคุณคอมไพล์และรันโค้ดด้านบน มันจะสร้างผลลัพธ์แบบนี้ -

1555814729 is an odd number

ในตัวอย่างข้างต้น เราจะเห็นว่าตัวแปร "random_num" รั่วไหลนอกขอบเขต if-else เราสามารถหลีกเลี่ยงสิ่งนี้ได้อย่างง่ายดายด้วยไวยากรณ์ "if statement with initializer" ใหม่

ด้านล่างนี้คือไวยากรณ์ของ "if statement with initializer" −

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

ตัวอย่าง

ตอนนี้ให้เราเขียนโค้ดเดียวกันโดยใช้คำสั่ง if ใหม่พร้อมตัวเริ่มต้น -

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

ในตัวอย่างข้างต้น ขอบเขตของตัวแปร "random_num" ถูกจำกัดไว้ที่บล็อก if-else ดังนั้นตัวแปรนี้จะไม่สามารถเข้าถึงได้นอกบล็อกนี้ น่าแปลกที่มันรักษาขอบเขตของตัวแปรให้แน่นโดยไม่ส่งผลกระทบต่อเอาต์พุตจริง

ผลลัพธ์

เมื่อคุณคอมไพล์และรันโค้ดด้านบน มันจะสร้างผลลัพธ์แบบนี้ -

943513352 is an even number

หมายเหตุ − ในขณะที่เรากำลังสร้างตัวเลขสุ่มในแต่ละครั้ง เอาต์พุตจะแตกต่างกันไปสำหรับการรันแต่ละครั้งแม้ในเครื่องเดียวกัน