Defekt? Ale gdzie? 3

Defekt? Ale gdzie? 3
Błąd goni błąd. Znajdź następny. 

 

Poniższy fragment kodu C zawiera bardzo ciekawy błąd.

 

  int x = 1;
  int y = 2;
  if (x = y) {
      printf("x is %d and y is %d
", x, y);
  }

 

Znajdź go!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Odpowiedź: instrukcja if uruchomi się dla dowolnego y. Nie uruchomi się jedynie dla y = 0. Błąd polega na tym, że zamiast sprawdzenia czy x równa się y zrobiono przyrównanie y do x.

Za: http://en.wikipedia.org/wiki/%3D%3D#Equality

To powinno Cię zainteresować