вопрос про тип float
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
вопрос про тип 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;
|
|
|
RE: вопрос про тип float - 2008-10-25 20:02:53.296666
|
|
|
vvviperrr
Сообщений: 301
Оценки: 0
Присоединился: 2007-03-20 21:33:16.790000
|
потому что компиль по умолчанию приводит к целому значению. делай так:
int chr1=1;
int chr2=4;
int chr3=8;
float resChr = (float)(chr1+chr2+chr3)/3;
|
|
|
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, тогда он к приведёт результат к большму типу.
|
|
|
RE: вопрос про тип float - 2008-10-25 20:08:26.190000
|
|
|
koro
Сообщений: 977
Оценки: 0
Присоединился: 2008-08-08 09:39:07.460000
|
спс ) компилятор что-то много на себя инициативы берёт..)
|
|
|
RE: вопрос про тип float - 2008-10-26 20:38:48.456666
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Не компилятор, а незнание стандартов (а конкретно - правил преведения типов и отличия целочисленного деления от дробного). Это практически в каждом учебние есть.
|
|
|
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; int chr2=4; int chr3=8; float resChr=(chr1+chr2+chr3)/3; (chr1+chr2+chr3) имеет тип int, литерал '3' распознаётся как целое (по умолчанию так, чтобы было иначе - '3.0' или явно прописать тип), '/' с двумя целыми операндами работает как оператор целочисленного деления. и только после этого вызывается оператор '=', и происходит неявное приведение типа int к float излишняя инициатива компилятора проявляется только в слабой системе типов, позволяющей неявные приведения
|
|
|
RE: вопрос про тип float - 2008-10-27 21:37:51.303333
|
|
|
Denaturat
Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
|
quote:
ORIGINAL: _SaZ_ Не компилятор, а незнание стандартов (а конкретно - правил преведения типов и отличия целочисленного деления от дробного). Это практически в каждом учебние есть. а незнание стандартов тут хроническое. это немодно - читать стандарты. впрочем, со знанием тут вообще проблемы…
|
|
|
|
|