Microsoft KB Archive/22321

= INFO: Common Programming Errors in the C Language =

Article ID: 22321

Article Last Modified on 7/5/2005

-

APPLIES TO


 * Microsoft C Professional Development System 6.0a
 * Microsoft Visual C++ 1.0 Professional Edition
 * Microsoft Visual C++ 1.5 Professional Edition
 * Microsoft Visual C++ 2.0 Professional Edition
 * Microsoft Visual C++ 4.0 Standard Edition
 * Microsoft Visual C++ 5.0 Enterprise Edition
 * Microsoft Visual C++ 6.0 Enterprise Edition
 * Microsoft Visual C++ 5.0 Professional Edition
 * Microsoft Visual C++ 6.0 Professional Edition
 * Microsoft Visual C++ 6.0 Standard Edition

-



This article was previously published under Q22321





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. Some are caught by the compiler and reported as errors or warnings.  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 -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</li> Overwriting the null terminator for a string</li> Prematurely terminating a function declaration with a semicolon (The compiler often flags the "orphan" block of code as a syntax error.)</li> Specifying the values of variables in a scanf statement instead of their addresses</li> Failing to declare the return type for a function</li> Assuming an expression evaluation order when using an expression with side effects (For example, a[i] = i++; is ambiguous and dangerous.)</li> Failing to account that a static variable in a function is initialized only once</li> Omitting a "break" from a case in a switch statement (Execution "falls through" to subsequent cases.)</li> 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.)</li>  Comparing a "char" variable against EOF (-1). The following idiom results in an infinite loop when char is unsigned. Note that char is signed by default, so the following will only fail when using the "/J" compiler option: char c; while ((c = getchar) != EOF) {  }                        </li></ul>

Keywords: kbinfo kblangc KB22321

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.