Hallo zusammen, noch eine kurze Frage zum Wochenende

Ich bin mal wieder auf die Nase gefallen und habe lange nach einem Fehler gesucht.
Ich verstehe nicht wo der Unterschied zwischen diesen beiden Abfragen liegt, dass es mal geht und mal nicht.


Code:
int main(void)
{ int a,b,result;

  a = 0x01;
  b = 0x80;
  
  if (a & b == 0)   /* Bitweises UND, es müste 0 rauskommen */
  {
     result = TRUE;  
  } else
  {
    result = FALSE;    /* Ergebis ist aber FALSE */
  }


  a = -3;
  b = +3;
  if (a + b == 0)
  {
     result = TRUE;   /* Ergebnis ist TRUE, hier stimmt es */
  } else
  {
    result = FALSE;  
  }

}
Ich weis, (falsch: man hat mir gesagt) ich muss hier nochmal Klammern.
if ((a & b) == 0)

als alter Pascal Freak, ist das für mich natürlich überhaupt nicht einleuchtend, weil da brauche ich garkeine Klammern bei diesem simplen Gebilde

Aber ich möchte einfach nur verstehen warum ich hier nochmals Klammern setzen muss.
Eine if Abfrage muss generell in Klammern, okay ist halt so festgelegt, aber wozu die anderen Klammern.
Bei der Addition funktioniert es ja auch ohne, bei dem Bitweisen UND nicht mehr.

Dank Euch für Infos.
Siro