من اطلاعات کمی در مورد تبدیل دادهها در C++ دارم. تبدیل پیشفرض و اینها رو کمی میدونم. الان یه سوال دارم که یه کم دقیقتر بررسی میکنه این موضوع و.
فرض کنیم کد زیر و داریم
int a;
char b;
long int c;
cin>>a>>b>>c;
cout<<(a+b)*c;
اول این که لازمه که برای از دست نرفتن مقدار دادهها در این عبارتها حتماً یه تبدیل صریح انجام بشه یا خودش بهترین حالت رو در نظر میگیره؟
دوم این که تبدیل نوعهایی که کامپایلر انجام میده بهینه هست یا به طور کلی همهچیز و به بالاترین مقدار ممکن تبدیل میکنه؟
سوال دوم از این نظر مهمه که اگه کامپایلر نتونه بهترین تبدیل رو پیدا کنه شاید بهتر باشه گاهی خودمون تبدیل صریح انجام بدیم. مثلاً تبدیلهای زیر همه نتیجهی درست و تولید میکنن
cout<<(a + (int)b) * c;
cout<<(long int)(a + (int)b) * c;
cout<<(long int)a + (long int)b) * c;
در ++C زبانی بسیار کوچکتر و پاکیزهتر در تلاش برای خروج است. (Bjarne Stroustrup)