Помощь - Поиск - Пользователи - Календарь
Полная версия: Вывод с++
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Account
Занятная штука выходит и не пойму почему выводит 0, а не вещественное число. Вот код
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream.h>
#include <conio.h>
int main()
{ system("cls");
double h=1/4; //Ведь присваивается значение 0.25 или я что то не правильно понимаю
cout<<"h= "<<h<<endl;
getch();
return 0;
}


Сборка Turbo C++ Vercion 3.0
Работа через DosBox0.74
OS: WinXP SP3

Добавлено через 16 мин.
Все, извиняюсь за поспешный вопрос. Вспомнил. Ранее уже сталкивался с преобразованием типов. Надо было явно указать 1.0/4
TarasBer
КРЕСТОПРОБЛЕМЫ

А вот в нормальных языках хоть 1/4 и даёт целый ноль, но ты не сможешь присвоить его вещественному числу - пока не напишешь 1.0/4.0, программа просто не скомпилируется.
sheka
TarasBer, Pascal? smile.gif

Account,
double h = (double) 1 / 4;
IUnknown
Цитата(sheka @ 29.11.2011 17:31) *
TarasBer, Pascal?
В Паскале операция деления всегда возвращает вещественное число, и
f: double;
// ...
f := 1/4;

работает прекрасно. А вот в Аде все по-другому: или
   f : Float;

-- или
f := Float (1/4); -- f = 0
-- или
f := 1.0 / 4.0; -- f = 0.25
(Приведение только одного числа к Float-у проблемы не решит, программа не будет компилироваться, пока оба операнда не будут одного типа smile.gif )
TarasBer
> f := Float (1/4); -- f = 0

В таком случае, если честно, тоже ноль не интуитивно очевиден, но всё-таки, если человек поставил Float вокруг всего выражения, то он это уже сделал сознательно и сам виноват, если что, а не его невнимательность.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.