== vs =
 The Program 
/*****************************************
   Program: equal.c.
   Author:  New C programmers
   Date:    Every semester
   Section: All sections
   Email:   everyone@umbc.edu
   An example of a common, but bad bug.
*****************************************/
#include 
int main() 
{
   int n ;
   /* Set n to be FALSE */
   n = 0 ;
   /*********************
   **  Error happens here.  I meant to say if n is 
   ** FALSE print "My program works", but instead I
   ** really set n to be FALSE again because I used =
   ** (the assignment operator) instead of == for
   ** comparison for equality.  The expression (n = 0) 
   ** evaluates to 0, so instead of the condition 
   ** being TRUE, it is FALSE and the program prints 
   ** "What's wrong??"
   ********************/
   if ( n = 0 )
   { 
      printf("My program works!\n") ;
   }
   else
   {
      printf("What's wrong??\n") ;
   }
   return 0;
}
 The Sample Run 
What's wrong??
 The Lesson 
 -  A very common bug is using one = instead of
== to test for equality in an if statement.  A
seemingly correct program can produce strange results.
 
Salvation !! 
Most newer compilers (including ours at UMBC) will report a 
warning message if you use '=' in an if statement.
linux1[108] % gcc -Wall -ansi equal.c
equal.c: In function `main':
equal.c:28: warning: suggest parentheses around assignment used as truth value
linux1[109] %