Różnica w zapisie kodu

0

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

2

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.

2

@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:

error.png

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:

no-error.png

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1