Dlaczego w jednym przypadku jest poprawnie..., a w drugim nie?
Jak dam 12 i 2 to źle...
a jak dam 12.0 i 2.0 to poprawnie.
Może mi to ktoś wyjaśnić? - Załączniki
Dlaczego w jednym przypadku jest poprawnie..., a w drugim nie?
Jak dam 12 i 2 to źle...
a jak dam 12.0 i 2.0 to poprawnie.
Może mi to ktoś wyjaśnić? - Załączniki
Podwójnie użyty operator :
z założenia był przeznaczony tylko do formatowania liczb zmiennoprzecinkowych (określał precyzję oraz wyrównanie).
Btw, pobierz Lazarusa - jest 'trochę' nowszy od Dev-Pascala (nie mówiąc o funkcjonalności), a działają na tym samym kompilatorze.
@Patryk27 - no nie do końca; Operator ten od niepamiętnych czasów (zapewne dużo wcześniej od TP7) mógł służyć nie tylko do łańcuchów czy liczb zmiennoprzecinkowych, ale także do innych typów, jak pojedyncze znaki, liczby całkowite itd.;
@mj28u natomiast ma problem dlatego, że próbował określić precyzję liczby całkowitej, co oczywiście jest niedopuszczalne:
Więc to nie jest dziwne, że kompilator zgłasza błąd; Natomiast w drugim przypadku zadeklarował stałe jako liczby zmiennoprzecinkowe, którym oczywiście można ustalić precyzję, dlatego kod został poprawnie skompilowany:
i to jest poprawna odpowiedź;
Jeśli chodzi o sam operator :
, to bez problemu można go wykorzystać w przypadku liczb całkowitych, ale nie do określania precyzji, a do ustalenia szerokości pola liczby; Czyli po liczbie lub wyrażeniu wstawić znak :
raz, np.:
const
A = 12;
B = 6;
begin
Write('Sum: ', (A + B):4);
ReadLn;
end.
Taki kod skompiluje się bez problemu na każdym kompilatorze Pascala, łącznie z TP7 i zapewne starszymi.