Посмотрите на следующую программу.
// Example program
#include <iostream>
#include <string>
int main()
{
int n=7;
std::cout <<"n/2 = "<< n/2 << std::endl;
std::cout <<"n/3.3 = "<< n/3.3 << std::endl;
}
выход :
n/2 = 3
n/3.3 = 2.12121
В приведенном выше примере,
Какие правила определяют, какое разделение используется?
Арифметические операции с двумя целочисленными операндами оцениваются в целочисленном контексте; арифметические операции с хотя бы одним операндом с плавающей запятой оцениваются в контексте с плавающей запятой. (Помимо этого существуют более конкретные правила преобразования типов, но основная идея заключается в том, если один из операндов float
или же double
он превращает другого в float
или же double
если это еще не так.)
Других решений пока нет …