Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Вывод с++

Автор: Account 29.11.2011 1:34

Занятная штука выходит и не пойму почему выводит 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 29.11.2011 13:57

КРЕСТОПРОБЛЕМЫ

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

Автор: sheka 29.11.2011 22:31

TarasBer, Pascal? smile.gif

Account,

double h = (double) 1 / 4;

Автор: IUnknown 30.11.2011 0:12

Цитата(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 30.11.2011 13:19

> f := Float (1/4); -- f = 0

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