INFO: Common Programming Errors in the C Language

Last reviewed: August 26, 1997
Article ID: Q22321

The information in this article applies to:
  • Microsoft C for MS-DOS, versions 5.1, 6.0, 6.0a, 6.0ax
  • Microsoft C/C++ for MS-DOS, version 7.0
  • Microsoft Visual C++ for Windows, versions 1.0, 1.5
  • Microsoft Visual C++ 32-bit Edition, versions 1.0, 2.0, 4.0, 5.0

SUMMARY

The text below lists some of the most common errors that occur programming in the C language. Any one of these items can cause unpredictable results, such as invalid data.

  • Using an automatic variable that has not been initialized
  • Omitting a closing comment delimiter
  • Using an array index greater than the length of the array (In C, array indexes run from zero to <length>-1.)
  • Omitting a semicolon or a closing brace
  • Using an uninitialized pointer
  • Using a forward slash when a backslash is required (for example, substituting "/n" for "\n.")
  • Using "=" in a comparison where "==" is desired
  • Overwriting the null terminator for a string
  • Prematurely terminating a function declaration with a semicolon (The compiler often flags the "orphan" block of code as a syntax error.)
  • Specifying the values of variables in a scanf() statement instead of their addresses
  • Failing to declare the return type for a function
  • Assuming an expression evaluation order when using an expression with side effects (For example, a[i] = i++; is ambiguous and dangerous.)
  • Failing to account that a static variable in a function is initialized only once
  • Omitting a "break" from a case in a switch statement (Execution "falls through" to subsequent cases.)
  • Using "break" to exit a block of code associated with an if statement (The break statement exits a block of code associated with a for, switch, or while statement.)
  • Comparing a "char" variable against EOF (-1). The following idiom results in an infinite loop:

          char c;
          while ((c = getchar()) != EOF)
    
             {
             }
    
Keywords          : CLngIss kbfasttip
Version           : MS-DOS:5.1,6.0,6.00a,6.00ax,7.0; WINDOWS:1.0,1.5; WINDOWS  NT:1.0,2.0,4.0,5.0
Platform          : MS-DOS NT WINDOWS
Issue type        : kbinfo


================================================================================


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: August 26, 1997
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.