Работа на кастинг между различными типами данных в C++ ... Программа здесь ниже принтами:Кастинг между различными типами данных в C++
>"Number is 2"
>"Number is 2.5"
>"Number is 2"
Пожалуйста, объясните, почему последний Отпечаток не «Число: 2,5», который я бы ожидать, когда стиль C++ будет плавать?
#include <iostream>
#include <conio.h>
using namespace std;
int main() {
int iNumber = 5;
float fNumber;
// No casting - C++ implicitly converts the result into an int and saves into a float
// which is a conversion from 'int' to 'float' with possible loss of data
fNumber = iNumber/2;
cout << "Number is " << fNumber << endl;
// C-style casting not recommended as not type safe
fNumber = (float) iNumber/2;
cout << "Number is " << fNumber << endl;
// C++ style casting using datatype constructors to make the casting safe
fNumber = static_cast<float>(iNumber/2);
cout << "Number is " << fNumber << endl;
_getch();
return 0;
}
(iNumber/2) становится 2, который затем преобразуется в поплавок, поэтому значение будет равно 2. Порядок операций. В том, что было до этого, вы бросаете iNumber в поплавок до его разделения, поэтому он выводит 2.5. –