Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

вопрос про тип float

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> вопрос про тип float
Имя
Сообщение << Старые топики   Новые топики >>
вопрос про тип float - 2008-10-25 19:53:27.900000   
koro

Сообщений: 977
Оценки: 0
Присоединился: 2008-08-08 09:39:07.460000
сразу прошу не пинать, C++ только начал смотреть, вот не понимаю, почему тип float возвращает целые значения:
 
 int chr1=1;
   int chr2=4;
    int chr3=8;
     float resChr=(chr1+chr2+chr3)/3;
Post #: 1
RE: вопрос про тип float - 2008-10-25 20:02:53.296666   
vvviperrr

Сообщений: 301
Оценки: 0
Присоединился: 2007-03-20 21:33:16.790000
потому что компиль по умолчанию приводит к целому значению. делай так:
&nbsp;&nbsp;&nbsp; int chr1=1; &nbsp;&nbsp;&nbsp; int chr2=4; &nbsp;&nbsp;&nbsp; int chr3=8; &nbsp;&nbsp;&nbsp; float resChr = (float)(chr1+chr2+chr3)/3;
Post #: 2
RE: вопрос про тип float - 2008-10-25 20:04:58.733333   
VENOM4X

Сообщений: 246
Оценки: 0
Присоединился: 2008-02-18 22:49:08.960000
сделай так
float resChr=(chr1+chr2+chr3)/3.0;
или
float resChr=(float)(chr1+chr2+chr3)/3;
Компилер смотрит - int / int и думает - блин, округлю значение и верну int.
Так что или ты явно преобразуешь к float. Или один из операднов - float - т.е. 3.0, тогда он к приведёт результат к большму типу.
Post #: 3
RE: вопрос про тип float - 2008-10-25 20:08:26.190000   
koro

Сообщений: 977
Оценки: 0
Присоединился: 2008-08-08 09:39:07.460000
спс ) компилятор что-то много на себя инициативы берёт..)
Post #: 4
RE: вопрос про тип float - 2008-10-26 20:38:48.456666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Не компилятор, а незнание стандартов (а конкретно - правил преведения типов и отличия целочисленного деления от дробного). Это практически в каждом учебние есть.
Post #: 5
RE: вопрос про тип float - 2008-10-27 21:10:18.106666   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: brtn

сразу прошу не пинать, C++ только начал смотреть, вот не понимаю, почему тип float возвращает целые значения:

int chr1=1;
&nbsp; int chr2=4;
&nbsp; &nbsp;int chr3=8;
&nbsp;&nbsp;&nbsp; float resChr=(chr1+chr2+chr3)/3;


(chr1+chr2+chr3) имеет тип int, литерал '3' распознаётся как целое (по умолчанию так, чтобы было иначе - '3.0' или явно прописать тип), '/' с двумя целыми операндами работает как оператор целочисленного деления. и только после этого вызывается оператор '=', и происходит неявное приведение типа int к float

излишняя инициатива компилятора проявляется только в слабой системе типов, позволяющей неявные приведения
Post #: 6
RE: вопрос про тип float - 2008-10-27 21:37:51.303333   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: _SaZ_

Не компилятор, а незнание стандартов (а конкретно - правил преведения типов и отличия целочисленного деления от дробного). Это практически в каждом учебние есть.


а незнание стандартов тут хроническое. это немодно - читать стандарты. впрочем, со знанием тут вообще проблемы…
Post #: 7
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> вопрос про тип float







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.