Kde je chyba - program v C

Tomáš Hamouz hamouz na divesoft.cz
Středa Říjen 2 13:55:18 CEST 2013


Musite na C nahlizet jako na trochu komfortnejsi assembler.
Rozhodne ho nepovazovat za vyssi jazyk.

Tomas


> No, kupodivu Visual Basic chybu nehlasi. Mel jsem o nem lepsi mineni.

> Tvurci prog. jazyku jsou prilis benevolentni. Kolik bylo zbytecne ztraceno
> pracovnich hodin za ty roky po celem svete?

> Michal Gregor


> ----- Original Message ----- 
> From: "Jan Waclawek" <konfera na efton.sk>
> To: "HW-news" <hw-list na list.hw.cz>
> Sent: Wednesday, October 02, 2013 1:30 PM
> Subject: Re: Kde je chyba - program v C


>>Kde je chyba v nasledujicim radku?
>>
>>if (EE_Cti(K_EE_SPOJENI == 1)) {
>>
>>    Spust_neco()
>>}


> To su 4 riadky... ;-)

> A nie je tam ziadna syntakticka chyba - EE_Cti sa zavola s parametrom 1, ak
> K_EE_SPOJENI ma hodnotu 1; inak s parametrom 0.



>>Zajimalo by mne jak se tato chyba projevi v jinych jazycich treba C#, Java,
>>Paskal. Bude kompilator hlasit chybu?

> Pascal je prisne typovany jazyk a nedaju sa len tak mirnix-dirnix zamienat
> celociselne a booleanovske typy, takze by musela byt funkcia EE_Cti
> deklarovana s parametrom typu boolean; rovnako funkcia EE_Cti by musela
> mat navratovu hodnotu typu boolean; inak je to syntakticka chyba.

> Napriklad:

> var
>   K_EE_SPOJENI: byte;

> procedure Spust_neco;
> begin
> end;

> function EE_Cti(i: byte) : byte;
> begin
>   EE_Cti := i;
> end;


> begin
>   K_EE_SPOJENI := 123;
>   if (EE_Cti(K_EE_SPOJENI = 1)) then begin
>     Spust_neco;
>   end;
> end.


>> "c:\lazarus\fpc\2.2.4\bin\i386-win32\fpc.exe" "C:\tmp\a.pas"
> Free Pascal Compiler version 2.2.4 [2009/10/25] for i386
> Copyright (c) 1993-2008 by Florian Klaempfl
> Target OS: Win32 for i386
> Compiling C:\tmp\a.pas
> a.pas(16,30) Error: Incompatible type for arg no. 1: Got "Boolean",
> expected "Byte"
> a.pas(20) Fatal: There were 1 errors compiling module, stopping
> Fatal: Compilation aborted
> Error: c:\lazarus\fpc\2.2.4\bin\i386-win32\ppc386.exe returned an error
> exitcode (normal if you did not specify a source file to be compiled)

> wek



Další informace o konferenci Hw-list