نوع داده کاراکتری (char) میتواند شامل هر نوع کاراکتر از قبیل حرف، عدد و علامتهای مختلف باشد. گاهی اوقات اگر داخل این کاراکتر یک عدد قرار داشته باشد، شاید بخواهید آن را درون نوع داده int قرار دهید.
مراحل کار
به کد زیر دقت کنید:
1 2 3 4 5 6 7 8 9 10 |
#include <iostream> using namespace std; int main() { char character = '5'; int number = (int)character; cout << number << endl; } |
در اینجا از (int) برای تبدیل یا cast کردن مقدار کاراکتر به عدد صحیح استفاده شده است. اما پس از چاپ آن، بهجای آنکه عدد 5 را مشاهده کنیم، شاهد عدد 53 خواهیم بود ولی چرا؟!
در واقع تبدیل بالا، عدد مربوط به کد اسکی آن کاراکتر را برایمان برمیگرداند!
حل این مشکل
در کد بالا، عدد 53 جایگاه عدد اسکی کاراکتر 5 است. از طرفی 53، 48 تا از عدد 5 بیشتر است. بنابراین بهسادگی میتوان کد بالا را بهصورت زیر نوشت:
1 2 3 4 5 6 7 8 9 10 |
#include <iostream> using namespace std; int main() { char character = '5'; int number = (int)character - 48; cout << number << endl; } |
اگر در اینجا 5را به 6 تغییر دهید، مجدد با تفرقی از 48، عدد واقعی به دست میآید!
نکته
اما جالب است بدانید که 48، عدد اسکی مربوط به کاراکتر 0 است! یعنی در بالا میتوانید بهجای تفریق از 48، از مقدار ‘0’ نیز تفریق کنید.
نظرات ثبت شده بدون دیدگاه