C kompilator pro '51
Martin Sveda
sejda
Středa Březen 17 14:28:53 CET 2004
Zdravim,
z hlediska jazyka C je to, co se vam stalo spravne
a prekladac to nemuze vyhodnotit jako chybu.
Mozna by ale mohl vypsat nejaky warning, ale tim si
nejsem jist.
> Ze zacatku se mi taky nekdy stalo ze misto
> if(a==5)
> jsem napsal
> if(a=5)
> a pochopitelne nic to nedelalo. Jenze to ani nehlasilo chybu. Berou to
> novejsi prekladace jako chybu?
A chyba to neni, protoze a=5 se vyhodnoti vzdy jako
true, coz znamena, ze jste v podstate napsal,
ze chcete if (1){...}.
A ted jsem zkusil neco podobneho prelozit v gcc pod linuxem
a pri prekladu
#gcc test.c
to nehlasi nic
Pri prekladu
#gcc test.c -Wall, cili se vsema warningama, me to
upozornilo, ze if (a=5){ ... } je vzdy true...
testovaci program byl
#include <stdio.h>
int a;
int main(void)
{
if (a=5){
printf("Ahoj\n");
}
return 0;
}
No a ahoj se vypise vzdy.
S pozdravem
--
Martin Sveda
email: sejda@kn.vutbr.cz
martin.sveda@kn.vutbr.cz
www: www.kn.vutbr.cz/~sveda3
Další informace o konferenci Hw-list