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