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

อื่นและสลับคำสั่งที่มีการเริ่มต้นใน C ++ 17


ในหลายกรณี เราจำเป็นต้องตรวจสอบค่าของบางสิ่งที่ส่งคืนโดยฟังก์ชันและดำเนินการตามเงื่อนไขตามค่านี้ ดังนั้นรหัสของเราจะได้รับด้านล่าง -

// Some method or function
return_type foo(Params)
// Call function with Params and
// store return in var1
auto var1 = foo(Params);
if (var1 == /* some value */) {
   //Perform Something
} else {
   //Perform Something else
}

เพียงทำตามรูปแบบทั่วไปในบล็อกเงื่อนไข if-else ทั้งหมด ประการแรก มีคำสั่งเริ่มต้นซึ่งเป็นทางเลือกซึ่งตั้งค่าตัวแปร ตามด้วยบล็อก if-else ดังนั้นบล็อก if-else ทั่วไปจะได้รับดังนี้ -

init-statement
if (condition) {
   // Perform or Do Something
} else {
   // Perform or Do Something else
}

ใน C++17 คำสั่ง init จะแสดงหรือเรียกว่า initializer และเราสามารถเก็บไว้ในบล็อก if-else ได้โดยตรงในลักษณะดังต่อไปนี้

if (init-statement; condition) {
   // Perform Something
} else {
   // Perform Something else
}

ขอบเขตของตัวแปรแบบมีเงื่อนไขถูกจำกัดหรือจำกัดเฉพาะบล็อก if-else ปัจจุบัน นอกจากนี้ยังอนุญาตให้เราใช้ตัวระบุที่มีชื่อเดิมซ้ำในบล็อกแบบมีเงื่อนไขอื่น

if (auto var1 = foo(); condition) {
   ...
}
else{
   ...
}
// Another if-else block
if (auto var1 = bar(); condition) {
   ....
}
else {
....
}

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

หลังจากคำสั่งเริ่มต้น เราจำเป็นต้องระบุว่าตัวแปรใดที่กำลังดำเนินการตรวจสอบกรณีต่างๆ

switch (initial-statement; variable) {
   ....
   // cases
}

โปรแกรมที่สมบูรณ์

// Program to explain or demonstrate init if-else
// feature introduced in C++17
#include <iostream>
#include <cstdlib>
using namespace std;
int main() {
   // Fix or set up rand function to be implemented
   // later in program
   srand(time(NULL));
   // Before C++17
   int I = 2;
   if ( I % 2 == 0)
   cout << I << " is even number" << endl;
   // After C++17
   // if(init-statement; condition)
   if (int I = 4; I % 2 == 0 )
   cout<< I << " is even number" << endl;
   // Switch statement
   // switch(init;variable)
   switch (int I = rand() % 100; I) {
      default:
      cout<< "I = " << I << endl; break;
   }
}