English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تعليمية C++ الأساس

Online Tools

وظيفة C++

C++ Flow Control

C++ Arrays & Strings

C++ Data Structures

مؤشرات C++

الوراثة C++

تعليمية STL C++

C++ Classes & Objects

تحويلات الأنواع C++

دليل C++

في هذا الدرس، سنتعلم الأساسيات للتحويلات في C ++ باستخدام أمثلة.

يُسمح لك ب ++ بتحويل بيانات من نوع إلى نوع آخر. هذا يُسمى تحويلًا.

  1. التحويل التلقائي

  2. التحويل التلقائي (أيضًا يُسمى التحويل القسري)

التحويلات ذات الصلة: تحويل تحويل السلسلة إلى int C++  تحويل C ++ String إلى float / double

التحويل التلقائي

التحويل الذي يتم القيام به تلقائيًا من قبل المترجم يُسمى التحويل التلقائي. هذا النوع من التحويل يُسمى أيضًاالتحويل التلقائي

لننظر في مثالين لتحويل الأنواع التلقائية.

مثال 1: التحويل من int إلى double

// كيف يعمل التحويل التلقائي للأنواع
#include <iostream>
using namespace std;
int main() {
   // تخصيص قيمة لبيانة num_int
   int num_int = 9;
   // إعلان بيانة double
   double num_double;
 
   // التحويل التلقائي
   // تخصيص قيمة int لبيانة double
   num_double = num_int;
   cout << "num_int = " << num_int << endl;
   cout << "num_double = " << num_double << endl;
   return 0;
}

النتيجة

num_int = 9
num_double = 9

في البرنامج، قمنا بتخصيص بيانات int لبيانات double.

num_double = num_int;

في هذا السياق، قبل تخصيص قيمة int لبيانة num_double، يتم تحويلها تلقائيًا إلى double. هذا مثال على التحويل التلقائي للأنواع.

مثال 2: التحويل التلقائي من double إلى int

// كيف يعمل التحويل التلقائي للأنواع
#include <iostream>
using namespace std;
int main() {
   int num_int;
   double num_double = 9.99;
   // التحويل التلقائي
   // تخصيص قيمة double لبيانة int
   num_int = num_double;
   cout << "num_int = " << num_int << endl;
   cout << "num_double = " << num_double << endl;
   return 0;
}

النتيجة

num_int = 9
num_double = 9.99

في البرنامج، قمنا بتخصيص بيانات double لبيانات int.

num_double = num_int;

في هذا السياق، قبل تخصيص قيمة double للمتغير num_int، يقوم المترجم بتحويلها تلقائيًا إلى int. هذا مثال على التحويل التلقائي للأنواع.

الاحتياط:بما أن int لا يمكن أن يكون له جزء عشري، تم قطع الأرقام بعد النقطة في المثال السابق.

فقدان البيانات أثناء التحويل (تحويل ضيق النطاق)

من الممكن رؤية أن تحويل البيانات من نوع إلى آخر يمكن أن يؤدي بسهولة إلى فقدان البيانات. يحدث ذلك عندما يتم تحويل بيانات نوع أكبر إلى نوع أصغر.

قد يحدث فقدان البيانات أثناء تحويل النوع

تحويلات واضحة C++

عندما يقوم المستخدم بتحويل البيانات يدويًا من نوع إلى آخر، يُسمى هذاتحويلات واضحةهذا النوع من التحويل يُسمى أيضًاتحويل القوة

يمكننا استخدام ثلاث طرق رئيسية لاستخدام التحويلات التوضيحية في C++. هم:

  1. تمثيل تحويل النوع C (أيضًا يُسمى رمز التحويل القوة)

  2. تمثيل وظيفة النوع (أيضًا يُسمى نمط C++ القديم للتحويلات)

  3. عناصر تحويل النوع

تحويل نمط C

بشكل واضح، هذا النوع من التحويل يتأثرلغة البرمجة Cيُفضلتمثيل تحويل القوة

هذا النوع من الجملة هو:

(data_type)expression;

على سبيل المثال،

// 初始化int变量
int num_int = 26;
// 声明double变量
double num_double;
// 从int转换为double
num_double = (double)num_int;

تحويل وظيفة النوع

يمكننا أيضًا استخدام وظائف مشابهة للتحويل بين أنواع البيانات.

هذا النوع من الجملة هو:

data_type(expression);

على سبيل المثال،

// 初始化int变量
int num_int = 26;
// 声明double变量
double num_double;
// 从int转换为double
num_double = double(num_int);

مثال3: تحويلات النوع

#include <iostream>
using namespace std;
int main() {
    // 初始化double变量
    double num_double = 3.56;
    cout << "num_double = " << num_double << endl;
    // 从double到int的C风格转换
    int num_int1 = (int)num_double;
    cout << "num_int1   = " << num_int1 << endl;
    // 从double到int的函数样式转换
    int num_int2 = int(num_double);
    cout << "num_int2   = " << num_int2 << endl;
    return 0;
}

النتيجة

num_double = 3.56
num_int1 = 3
num_int2 = 3

نستخدمتحويل النوع بنمط C++وتحويل النوع بنمط الوظيفة لتحويل النوع،وعرض النتيجة. لأنهما يؤديان نفس المهمة، فإنهما يقدمان نفس الناتج.

عناصر تحويل النوع

إضافة إلى هذين عمليات التحويل، يحتوي C++ على أربعة عمليات تحويل النوع. وتسمىعناصر تحويل النوعهم:

  • static_cast

  • dynamic_cast

  • const_cast

  • reinterpret_cast

سنكتشف هذه التحويلات الإجبارية في تعليمات لاحقة.