source: public/doc/gnu-c/index.html@ 02598c2

Last change on this file since 02598c2 was 02598c2, checked in by Mikhail Kirillov <w96k@…>, on Oct 6, 2022 at 12:36:29 PM

Add gnu-c

  • Property mode set to 100644
File size: 98.3 KB
Line 
1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2<html>
3<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
4
5(The work of Trevis Rothwell and Nelson Beebe has been assigned or
6licensed to the FSF.)
7
8Permission is granted to copy, distribute and/or modify this document
9under the terms of the GNU Free Documentation License, Version 1.3 or
10any later version published by the Free Software Foundation; with the
11Invariant Sections being "GNU General Public License," with the
12Front-Cover Texts being "A GNU Manual," and with the Back-Cover
13Texts as in (a) below. A copy of the license is included in the
14section entitled "GNU Free Documentation License."
15
16(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
17modify this GNU manual. Buying copies from the FSF supports it in
18developing GNU and promoting software freedom." -->
19<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
20<head>
21<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
22<title>Top (GNU C Language Manual)</title>
23
24<meta name="description" content="Top (GNU C Language Manual)">
25<meta name="keywords" content="Top (GNU C Language Manual)">
26<meta name="resource-type" content="document">
27<meta name="distribution" content="global">
28<meta name="Generator" content="makeinfo">
29<link href="#Top" rel="start" title="Top">
30<link href="Symbol-Index.html" rel="index" title="Symbol Index">
31<link href="#SEC_Contents" rel="contents" title="Table of Contents">
32<link href="The-First-Example.html" rel="next" title="The First Example">
33<style type="text/css">
34<!--
35a.summary-letter {text-decoration: none}
36blockquote.indentedblock {margin-right: 0em}
37div.display {margin-left: 3.2em}
38div.example {margin-left: 3.2em}
39div.lisp {margin-left: 3.2em}
40kbd {font-style: oblique}
41pre.display {font-family: inherit}
42pre.format {font-family: inherit}
43pre.menu-comment {font-family: serif}
44pre.menu-preformatted {font-family: serif}
45span.nolinebreak {white-space: nowrap}
46span.roman {font-family: initial; font-weight: normal}
47span.sansserif {font-family: sans-serif; font-weight: normal}
48ul.no-bullet {list-style: none}
49-->
50</style>
51
52
53</head>
54
55<body lang="en">
56 <h1 class="settitle" align="center">GNU C Language Manual</h1>
57 <p align="center">Also available in <a href="c.pdf">PDF</a></p>
58
59
60
61
62
63
64<span id="SEC_Overview"></span>
65<h2 class="shortcontents-heading">Short Table of Contents</h2>
66
67<div class="shortcontents">
68<ul class="no-bullet">
69<li><a id="stoc-The-First-Example-1" href="#toc-The-First-Example-1">1 The First Example</a></li>
70<li><a id="stoc-A-Complete-Program" href="#toc-A-Complete-Program">2 A Complete Program</a></li>
71<li><a id="stoc-Storage-and-Data" href="#toc-Storage-and-Data">3 Storage and Data</a></li>
72<li><a id="stoc-Beyond-Integers-1" href="#toc-Beyond-Integers-1">4 Beyond Integers</a></li>
73<li><a id="stoc-Lexical-Syntax-1" href="#toc-Lexical-Syntax-1">5 Lexical Syntax</a></li>
74<li><a id="stoc-Arithmetic-1" href="#toc-Arithmetic-1">6 Arithmetic</a></li>
75<li><a id="stoc-Assignment-Expressions-1" href="#toc-Assignment-Expressions-1">7 Assignment Expressions</a></li>
76<li><a id="stoc-Execution-Control-Expressions-1" href="#toc-Execution-Control-Expressions-1">8 Execution Control Expressions</a></li>
77<li><a id="stoc-Binary-Operator-Grammar-1" href="#toc-Binary-Operator-Grammar-1">9 Binary Operator Grammar</a></li>
78<li><a id="stoc-Order-of-Execution-1" href="#toc-Order-of-Execution-1">10 Order of Execution</a></li>
79<li><a id="stoc-Primitive-Data-Types" href="#toc-Primitive-Data-Types">11 Primitive Data Types</a></li>
80<li><a id="stoc-Constants-1" href="#toc-Constants-1">12 Constants</a></li>
81<li><a id="stoc-Type-Size-1" href="#toc-Type-Size-1">13 Type Size</a></li>
82<li><a id="stoc-Pointers-1" href="#toc-Pointers-1">14 Pointers</a></li>
83<li><a id="stoc-Structures-1" href="#toc-Structures-1">15 Structures</a></li>
84<li><a id="stoc-Arrays-1" href="#toc-Arrays-1">16 Arrays</a></li>
85<li><a id="stoc-Enumeration-Types-1" href="#toc-Enumeration-Types-1">17 Enumeration Types</a></li>
86<li><a id="stoc-Defining-Typedef-Names-1" href="#toc-Defining-Typedef-Names-1">18 Defining Typedef Names</a></li>
87<li><a id="stoc-Statements-1" href="#toc-Statements-1">19 Statements</a></li>
88<li><a id="stoc-Variables-1" href="#toc-Variables-1">20 Variables</a></li>
89<li><a id="stoc-Type-Qualifiers-1" href="#toc-Type-Qualifiers-1">21 Type Qualifiers</a></li>
90<li><a id="stoc-Functions-1" href="#toc-Functions-1">22 Functions</a></li>
91<li><a id="stoc-Compatible-Types-1" href="#toc-Compatible-Types-1">23 Compatible Types</a></li>
92<li><a id="stoc-Type-Conversions-1" href="#toc-Type-Conversions-1">24 Type Conversions</a></li>
93<li><a id="stoc-Scope-1" href="#toc-Scope-1">25 Scope</a></li>
94<li><a id="stoc-Preprocessing-1" href="#toc-Preprocessing-1">26 Preprocessing</a></li>
95<li><a id="stoc-Integers-in-Depth-1" href="#toc-Integers-in-Depth-1">27 Integers in Depth</a></li>
96<li><a id="stoc-Floating-Point-in-Depth-1" href="#toc-Floating-Point-in-Depth-1">28 Floating Point in Depth</a></li>
97<li><a id="stoc-Compilation-1" href="#toc-Compilation-1">29 Compilation</a></li>
98<li><a id="stoc-Directing-Compilation-1" href="#toc-Directing-Compilation-1">30 Directing Compilation</a></li>
99<li><a id="stoc-Type-Alignment-1" href="#toc-Type-Alignment-1">Appendix A Type Alignment</a></li>
100<li><a id="stoc-Aliasing-1" href="#toc-Aliasing-1">Appendix B Aliasing</a></li>
101<li><a id="stoc-Digraphs-1" href="#toc-Digraphs-1">Appendix C Digraphs</a></li>
102<li><a id="stoc-Attributes-in-Declarations" href="#toc-Attributes-in-Declarations">Appendix D Attributes in Declarations</a></li>
103<li><a id="stoc-Signals-1" href="#toc-Signals-1">Appendix E Signals</a></li>
104<li><a id="stoc-GNU-Free-Documentation-License-1" href="#toc-GNU-Free-Documentation-License-1">Appendix F GNU Free Documentation License</a></li>
105<li><a id="stoc-Index-of-Symbols-and-Keywords" href="#toc-Index-of-Symbols-and-Keywords" rel="index">Index of Symbols and Keywords</a></li>
106<li><a id="stoc-Concept-Index-1" href="#toc-Concept-Index-1" rel="index">Concept Index</a></li>
107</ul>
108</div>
109
110<span id="SEC_Contents"></span>
111<h2 class="contents-heading">Table of Contents</h2>
112
113<div class="contents">
114
115<ul class="no-bullet">
116 <li><a id="toc-The-First-Example-1" href="The-First-Example.html#The-First-Example">1 The First Example</a>
117 <ul class="no-bullet">
118 <li><a id="toc-Example_003a-Recursive-Fibonacci" href="Recursive-Fibonacci.html#Recursive-Fibonacci">1.1 Example: Recursive Fibonacci</a>
119 <ul class="no-bullet">
120 <li><a id="toc-Function-Header-1" href="Function-Header.html#Function-Header">1.1.1 Function Header</a></li>
121 <li><a id="toc-Function-Body-1" href="Function-Body.html#Function-Body">1.1.2 Function Body</a></li>
122 </ul></li>
123 <li><a id="toc-The-Stack_002c-And-Stack-Overflow" href="Stack.html#Stack">1.2 The Stack, And Stack Overflow</a></li>
124 <li><a id="toc-Example_003a-Iterative-Fibonacci" href="Iterative-Fibonacci.html#Iterative-Fibonacci">1.3 Example: Iterative Fibonacci</a></li>
125 </ul></li>
126 <li><a id="toc-A-Complete-Program" href="Complete-Program.html#Complete-Program">2 A Complete Program</a>
127 <ul class="no-bullet">
128 <li><a id="toc-Complete-Program-Example" href="Complete-Example.html#Complete-Example">2.1 Complete Program Example</a></li>
129 <li><a id="toc-Complete-Program-Explanation" href="Complete-Explanation.html#Complete-Explanation">2.2 Complete Program Explanation</a></li>
130 <li><a id="toc-Complete-Program_002c-Line-by-Line" href="Complete-Line_002dby_002dLine.html#Complete-Line_002dby_002dLine">2.3 Complete Program, Line by Line</a></li>
131 <li><a id="toc-Compiling-the-Example-Program" href="Compile-Example.html#Compile-Example">2.4 Compiling the Example Program</a></li>
132 </ul></li>
133 <li><a id="toc-Storage-and-Data" href="Storage.html#Storage">3 Storage and Data</a></li>
134 <li><a id="toc-Beyond-Integers-1" href="Beyond-Integers.html#Beyond-Integers">4 Beyond Integers</a>
135 <ul class="no-bullet">
136 <li><a id="toc-An-Example-with-Non_002dInteger-Numbers" href="Float-Example.html#Float-Example">4.1 An Example with Non-Integer Numbers</a></li>
137 <li><a id="toc-An-Example-with-Arrays" href="Array-Example.html#Array-Example">4.2 An Example with Arrays</a></li>
138 <li><a id="toc-Calling-the-Array-Example" href="Array-Example-Call.html#Array-Example-Call">4.3 Calling the Array Example</a></li>
139 <li><a id="toc-Variations-for-Array-Example" href="Array-Example-Variations.html#Array-Example-Variations">4.4 Variations for Array Example</a></li>
140 </ul></li>
141 <li><a id="toc-Lexical-Syntax-1" href="Lexical-Syntax.html#Lexical-Syntax">5 Lexical Syntax</a>
142 <ul class="no-bullet">
143 <li><a id="toc-Write-Programs-in-English_0021" href="English.html#English">5.1 Write Programs in English!</a></li>
144 <li><a id="toc-Characters-1" href="Characters.html#Characters">5.2 Characters</a></li>
145 <li><a id="toc-Whitespace-1" href="Whitespace.html#Whitespace">5.3 Whitespace</a></li>
146 <li><a id="toc-Comments-1" href="Comments.html#Comments">5.4 Comments</a></li>
147 <li><a id="toc-Identifiers-1" href="Identifiers.html#Identifiers">5.5 Identifiers</a></li>
148 <li><a id="toc-Operators-and-Punctuation" href="Operators_002fPunctuation.html#Operators_002fPunctuation">5.6 Operators and Punctuation</a></li>
149 <li><a id="toc-Line-Continuation-1" href="Line-Continuation.html#Line-Continuation">5.7 Line Continuation</a></li>
150 </ul></li>
151 <li><a id="toc-Arithmetic-1" href="Arithmetic.html#Arithmetic">6 Arithmetic</a>
152 <ul class="no-bullet">
153 <li><a id="toc-Basic-Arithmetic-1" href="Basic-Arithmetic.html#Basic-Arithmetic">6.1 Basic Arithmetic</a></li>
154 <li><a id="toc-Integer-Arithmetic-1" href="Integer-Arithmetic.html#Integer-Arithmetic">6.2 Integer Arithmetic</a></li>
155 <li><a id="toc-Integer-Overflow-1" href="Integer-Overflow.html#Integer-Overflow">6.3 Integer Overflow</a>
156 <ul class="no-bullet">
157 <li><a id="toc-Overflow-with-Unsigned-Integers" href="Unsigned-Overflow.html#Unsigned-Overflow">6.3.1 Overflow with Unsigned Integers</a></li>
158 <li><a id="toc-Overflow-with-Signed-Integers" href="Signed-Overflow.html#Signed-Overflow">6.3.2 Overflow with Signed Integers</a></li>
159 </ul></li>
160 <li><a id="toc-Mixed_002dMode-Arithmetic" href="Mixed-Mode.html#Mixed-Mode">6.4 Mixed-Mode Arithmetic</a></li>
161 <li><a id="toc-Division-and-Remainder-1" href="Division-and-Remainder.html#Division-and-Remainder">6.5 Division and Remainder</a></li>
162 <li><a id="toc-Numeric-Comparisons-1" href="Numeric-Comparisons.html#Numeric-Comparisons">6.6 Numeric Comparisons</a></li>
163 <li><a id="toc-Shift-Operations-1" href="Shift-Operations.html#Shift-Operations">6.7 Shift Operations</a>
164 <ul class="no-bullet">
165 <li><a id="toc-Shifting-Makes-New-Bits" href="Bits-Shifted-In.html#Bits-Shifted-In">6.7.1 Shifting Makes New Bits</a></li>
166 <li><a id="toc-Caveats-for-Shift-Operations" href="Shift-Caveats.html#Shift-Caveats">6.7.2 Caveats for Shift Operations</a></li>
167 <li><a id="toc-Shift-Hacks-1" href="Shift-Hacks.html#Shift-Hacks">6.7.3 Shift Hacks</a></li>
168 </ul></li>
169 <li><a id="toc-Bitwise-Operations-1" href="Bitwise-Operations.html#Bitwise-Operations">6.8 Bitwise Operations</a></li>
170 </ul></li>
171 <li><a id="toc-Assignment-Expressions-1" href="Assignment-Expressions.html#Assignment-Expressions">7 Assignment Expressions</a>
172 <ul class="no-bullet">
173 <li><a id="toc-Simple-Assignment-1" href="Simple-Assignment.html#Simple-Assignment">7.1 Simple Assignment</a></li>
174 <li><a id="toc-Lvalues-1" href="Lvalues.html#Lvalues">7.2 Lvalues</a></li>
175 <li><a id="toc-Modifying-Assignment-1" href="Modifying-Assignment.html#Modifying-Assignment">7.3 Modifying Assignment</a></li>
176 <li><a id="toc-Increment-and-Decrement-Operators" href="Increment_002fDecrement.html#Increment_002fDecrement">7.4 Increment and Decrement Operators</a></li>
177 <li><a id="toc-Postincrement-and-Postdecrement" href="Postincrement_002fPostdecrement.html#Postincrement_002fPostdecrement">7.5 Postincrement and Postdecrement</a></li>
178 <li><a id="toc-Pitfall_003a-Assignment-in-Subexpressions" href="Assignment-in-Subexpressions.html#Assignment-in-Subexpressions">7.6 Pitfall: Assignment in Subexpressions</a></li>
179 <li><a id="toc-Write-Assignments-in-Separate-Statements" href="Write-Assignments-Separately.html#Write-Assignments-Separately">7.7 Write Assignments in Separate Statements</a></li>
180 </ul></li>
181 <li><a id="toc-Execution-Control-Expressions-1" href="Execution-Control-Expressions.html#Execution-Control-Expressions">8 Execution Control Expressions</a>
182 <ul class="no-bullet">
183 <li><a id="toc-Logical-Operators-1" href="Logical-Operators.html#Logical-Operators">8.1 Logical Operators</a></li>
184 <li><a id="toc-Logical-Operators-and-Comparisons" href="Logicals-and-Comparison.html#Logicals-and-Comparison">8.2 Logical Operators and Comparisons</a></li>
185 <li><a id="toc-Logical-Operators-and-Assignments" href="Logicals-and-Assignments.html#Logicals-and-Assignments">8.3 Logical Operators and Assignments</a></li>
186 <li><a id="toc-Conditional-Expression-1" href="Conditional-Expression.html#Conditional-Expression">8.4 Conditional Expression</a>
187 <ul class="no-bullet">
188 <li><a id="toc-Rules-for-Conditional-Operator" href="Conditional-Rules.html#Conditional-Rules">8.4.1 Rules for Conditional Operator</a></li>
189 <li><a id="toc-Conditional-Operator-Branches" href="Conditional-Branches.html#Conditional-Branches">8.4.2 Conditional Operator Branches</a></li>
190 </ul></li>
191 <li><a id="toc-Comma-Operator-1" href="Comma-Operator.html#Comma-Operator">8.5 Comma Operator</a>
192 <ul class="no-bullet">
193 <li><a id="toc-The-Uses-of-the-Comma-Operator" href="Uses-of-Comma.html#Uses-of-Comma">8.5.1 The Uses of the Comma Operator</a></li>
194 <li><a id="toc-Clean-Use-of-the-Comma-Operator" href="Clean-Comma.html#Clean-Comma">8.5.2 Clean Use of the Comma Operator</a></li>
195 <li><a id="toc-When-Not-to-Use-the-Comma-Operator" href="Avoid-Comma.html#Avoid-Comma">8.5.3 When Not to Use the Comma Operator</a></li>
196 </ul></li>
197 </ul></li>
198 <li><a id="toc-Binary-Operator-Grammar-1" href="Binary-Operator-Grammar.html#Binary-Operator-Grammar">9 Binary Operator Grammar</a></li>
199 <li><a id="toc-Order-of-Execution-1" href="Order-of-Execution.html#Order-of-Execution">10 Order of Execution</a>
200 <ul class="no-bullet">
201 <li><a id="toc-Reordering-of-Operands-1" href="Reordering-of-Operands.html#Reordering-of-Operands">10.1 Reordering of Operands</a></li>
202 <li><a id="toc-Associativity-and-Ordering-1" href="Associativity-and-Ordering.html#Associativity-and-Ordering">10.2 Associativity and Ordering</a></li>
203 <li><a id="toc-Sequence-Points-1" href="Sequence-Points.html#Sequence-Points">10.3 Sequence Points</a></li>
204 <li><a id="toc-Postincrement-and-Ordering-1" href="Postincrement-and-Ordering.html#Postincrement-and-Ordering">10.4 Postincrement and Ordering</a></li>
205 <li><a id="toc-Ordering-of-Operands-1" href="Ordering-of-Operands.html#Ordering-of-Operands">10.5 Ordering of Operands</a></li>
206 <li><a id="toc-Optimization-and-Ordering-1" href="Optimization-and-Ordering.html#Optimization-and-Ordering">10.6 Optimization and Ordering</a></li>
207 </ul></li>
208 <li><a id="toc-Primitive-Data-Types" href="Primitive-Types.html#Primitive-Types">11 Primitive Data Types</a>
209 <ul class="no-bullet">
210 <li><a id="toc-Integer-Data-Types" href="Integer-Types.html#Integer-Types">11.1 Integer Data Types</a>
211 <ul class="no-bullet">
212 <li><a id="toc-Basic-Integers-1" href="Basic-Integers.html#Basic-Integers">11.1.1 Basic Integers</a></li>
213 <li><a id="toc-Signed-and-Unsigned-Types-1" href="Signed-and-Unsigned-Types.html#Signed-and-Unsigned-Types">11.1.2 Signed and Unsigned Types</a></li>
214 <li><a id="toc-Narrow-Integers-1" href="Narrow-Integers.html#Narrow-Integers">11.1.3 Narrow Integers</a></li>
215 <li><a id="toc-Conversion-among-Integer-Types" href="Integer-Conversion.html#Integer-Conversion">11.1.4 Conversion among Integer Types</a></li>
216 <li><a id="toc-Boolean-Type-1" href="Boolean-Type.html#Boolean-Type">11.1.5 Boolean Type</a></li>
217 <li><a id="toc-Integer-Variations-1" href="Integer-Variations.html#Integer-Variations">11.1.6 Integer Variations</a></li>
218 </ul></li>
219 <li><a id="toc-Floating_002dPoint-Data-Types-1" href="Floating_002dPoint-Data-Types.html#Floating_002dPoint-Data-Types">11.2 Floating-Point Data Types</a></li>
220 <li><a id="toc-Complex-Data-Types-1" href="Complex-Data-Types.html#Complex-Data-Types">11.3 Complex Data Types</a></li>
221 <li><a id="toc-The-Void-Type-1" href="The-Void-Type.html#The-Void-Type">11.4 The Void Type</a></li>
222 <li><a id="toc-Other-Data-Types-1" href="Other-Data-Types.html#Other-Data-Types">11.5 Other Data Types</a></li>
223 <li><a id="toc-Type-Designators-1" href="Type-Designators.html#Type-Designators">11.6 Type Designators</a></li>
224 </ul></li>
225 <li><a id="toc-Constants-1" href="Constants.html#Constants">12 Constants</a>
226 <ul class="no-bullet">
227 <li><a id="toc-Integer-Constants-1" href="Integer-Constants.html#Integer-Constants">12.1 Integer Constants</a></li>
228 <li><a id="toc-Integer-Constant-Data-Types" href="Integer-Const-Type.html#Integer-Const-Type">12.2 Integer Constant Data Types</a></li>
229 <li><a id="toc-Floating_002dPoint-Constants" href="Floating-Constants.html#Floating-Constants">12.3 Floating-Point Constants</a></li>
230 <li><a id="toc-Imaginary-Constants-1" href="Imaginary-Constants.html#Imaginary-Constants">12.4 Imaginary Constants</a></li>
231 <li><a id="toc-Invalid-Numbers-1" href="Invalid-Numbers.html#Invalid-Numbers">12.5 Invalid Numbers</a></li>
232 <li><a id="toc-Character-Constants-1" href="Character-Constants.html#Character-Constants">12.6 Character Constants</a></li>
233 <li><a id="toc-String-Constants-1" href="String-Constants.html#String-Constants">12.7 String Constants</a></li>
234 <li><a id="toc-UTF_002d8-String-Constants-1" href="UTF_002d8-String-Constants.html#UTF_002d8-String-Constants">12.8 UTF-8 String Constants</a></li>
235 <li><a id="toc-Unicode-Character-Codes-1" href="Unicode-Character-Codes.html#Unicode-Character-Codes">12.9 Unicode Character Codes</a></li>
236 <li><a id="toc-Wide-Character-Constants-1" href="Wide-Character-Constants.html#Wide-Character-Constants">12.10 Wide Character Constants</a></li>
237 <li><a id="toc-Wide-String-Constants-1" href="Wide-String-Constants.html#Wide-String-Constants">12.11 Wide String Constants</a></li>
238 </ul></li>
239 <li><a id="toc-Type-Size-1" href="Type-Size.html#Type-Size">13 Type Size</a></li>
240 <li><a id="toc-Pointers-1" href="Pointers.html#Pointers">14 Pointers</a>
241 <ul class="no-bullet">
242 <li><a id="toc-Address-of-Data-1" href="Address-of-Data.html#Address-of-Data">14.1 Address of Data</a></li>
243 <li><a id="toc-Pointer-Types-1" href="Pointer-Types.html#Pointer-Types">14.2 Pointer Types</a></li>
244 <li><a id="toc-Pointer_002dVariable-Declarations" href="Pointer-Declarations.html#Pointer-Declarations">14.3 Pointer-Variable Declarations</a></li>
245 <li><a id="toc-Pointer_002dType-Designators" href="Pointer-Type-Designators.html#Pointer-Type-Designators">14.4 Pointer-Type Designators</a></li>
246 <li><a id="toc-Dereferencing-Pointers" href="Pointer-Dereference.html#Pointer-Dereference">14.5 Dereferencing Pointers</a></li>
247 <li><a id="toc-Null-Pointers-1" href="Null-Pointers.html#Null-Pointers">14.6 Null Pointers</a></li>
248 <li><a id="toc-Dereferencing-Null-or-Invalid-Pointers" href="Invalid-Dereference.html#Invalid-Dereference">14.7 Dereferencing Null or Invalid Pointers</a></li>
249 <li><a id="toc-Void-Pointers-1" href="Void-Pointers.html#Void-Pointers">14.8 Void Pointers</a></li>
250 <li><a id="toc-Pointer-Comparison-1" href="Pointer-Comparison.html#Pointer-Comparison">14.9 Pointer Comparison</a></li>
251 <li><a id="toc-Pointer-Arithmetic-1" href="Pointer-Arithmetic.html#Pointer-Arithmetic">14.10 Pointer Arithmetic</a></li>
252 <li><a id="toc-Pointers-and-Arrays-1" href="Pointers-and-Arrays.html#Pointers-and-Arrays">14.11 Pointers and Arrays</a></li>
253 <li><a id="toc-Pointer-Arithmetic-at-Low-Level" href="Pointer-Arithmetic-Low-Level.html#Pointer-Arithmetic-Low-Level">14.12 Pointer Arithmetic at Low Level</a></li>
254 <li><a id="toc-Pointer-Increment-and-Decrement" href="Pointer-Increment_002fDecrement.html#Pointer-Increment_002fDecrement">14.13 Pointer Increment and Decrement</a></li>
255 <li><a id="toc-Drawbacks-of-Pointer-Arithmetic" href="Pointer-Arithmetic-Drawbacks.html#Pointer-Arithmetic-Drawbacks">14.14 Drawbacks of Pointer Arithmetic</a></li>
256 <li><a id="toc-Pointer_002dInteger-Conversion-1" href="Pointer_002dInteger-Conversion.html#Pointer_002dInteger-Conversion">14.15 Pointer-Integer Conversion</a></li>
257 <li><a id="toc-Printing-Pointers-1" href="Printing-Pointers.html#Printing-Pointers">14.16 Printing Pointers</a></li>
258 </ul></li>
259 <li><a id="toc-Structures-1" href="Structures.html#Structures">15 Structures</a>
260 <ul class="no-bullet">
261 <li><a id="toc-Referencing-Structure-Fields" href="Referencing-Fields.html#Referencing-Fields">15.1 Referencing Structure Fields</a></li>
262 <li><a id="toc-Dynamic-Memory-Allocation-1" href="Dynamic-Memory-Allocation.html#Dynamic-Memory-Allocation">15.2 Dynamic Memory Allocation</a></li>
263 <li><a id="toc-Field-Offset-1" href="Field-Offset.html#Field-Offset">15.3 Field Offset</a></li>
264 <li><a id="toc-Structure-Layout-1" href="Structure-Layout.html#Structure-Layout">15.4 Structure Layout</a></li>
265 <li><a id="toc-Packed-Structures-1" href="Packed-Structures.html#Packed-Structures">15.5 Packed Structures</a></li>
266 <li><a id="toc-Bit-Fields-1" href="Bit-Fields.html#Bit-Fields">15.6 Bit Fields</a></li>
267 <li><a id="toc-Bit-Field-Packing-1" href="Bit-Field-Packing.html#Bit-Field-Packing">15.7 Bit Field Packing</a></li>
268 <li><a id="toc-const-Fields-1" href="const-Fields.html#const-Fields">15.8 <code>const</code> Fields</a></li>
269 <li><a id="toc-Arrays-of-Length-Zero" href="Zero-Length.html#Zero-Length">15.9 Arrays of Length Zero</a></li>
270 <li><a id="toc-Flexible-Array-Fields-1" href="Flexible-Array-Fields.html#Flexible-Array-Fields">15.10 Flexible Array Fields</a></li>
271 <li><a id="toc-Overlaying-Different-Structures" href="Overlaying-Structures.html#Overlaying-Structures">15.11 Overlaying Different Structures</a></li>
272 <li><a id="toc-Structure-Assignment-1" href="Structure-Assignment.html#Structure-Assignment">15.12 Structure Assignment</a></li>
273 <li><a id="toc-Unions-1" href="Unions.html#Unions">15.13 Unions</a></li>
274 <li><a id="toc-Packing-With-Unions-1" href="Packing-With-Unions.html#Packing-With-Unions">15.14 Packing With Unions</a></li>
275 <li><a id="toc-Cast-to-a-Union-Type" href="Cast-to-Union.html#Cast-to-Union">15.15 Cast to a Union Type</a></li>
276 <li><a id="toc-Structure-Constructors-1" href="Structure-Constructors.html#Structure-Constructors">15.16 Structure Constructors</a></li>
277 <li><a id="toc-Unnamed-Types-as-Fields-1" href="Unnamed-Types-as-Fields.html#Unnamed-Types-as-Fields">15.17 Unnamed Types as Fields</a></li>
278 <li><a id="toc-Incomplete-Types-1" href="Incomplete-Types.html#Incomplete-Types">15.18 Incomplete Types</a></li>
279 <li><a id="toc-Intertwined-Incomplete-Types-1" href="Intertwined-Incomplete-Types.html#Intertwined-Incomplete-Types">15.19 Intertwined Incomplete Types</a></li>
280 <li><a id="toc-Type-Tags-1" href="Type-Tags.html#Type-Tags">15.20 Type Tags</a></li>
281 </ul></li>
282 <li><a id="toc-Arrays-1" href="Arrays.html#Arrays">16 Arrays</a>
283 <ul class="no-bullet">
284 <li><a id="toc-Accessing-Array-Elements-1" href="Accessing-Array-Elements.html#Accessing-Array-Elements">16.1 Accessing Array Elements</a></li>
285 <li><a id="toc-Declaring-an-Array-1" href="Declaring-an-Array.html#Declaring-an-Array">16.2 Declaring an Array</a></li>
286 <li><a id="toc-Strings-1" href="Strings.html#Strings">16.3 Strings</a></li>
287 <li><a id="toc-Array-Type-Designators-1" href="Array-Type-Designators.html#Array-Type-Designators">16.4 Array Type Designators</a></li>
288 <li><a id="toc-Incomplete-Array-Types-1" href="Incomplete-Array-Types.html#Incomplete-Array-Types">16.5 Incomplete Array Types</a></li>
289 <li><a id="toc-Limitations-of-C-Arrays-1" href="Limitations-of-C-Arrays.html#Limitations-of-C-Arrays">16.6 Limitations of C Arrays</a></li>
290 <li><a id="toc-Multidimensional-Arrays-1" href="Multidimensional-Arrays.html#Multidimensional-Arrays">16.7 Multidimensional Arrays</a></li>
291 <li><a id="toc-Constructing-Array-Values-1" href="Constructing-Array-Values.html#Constructing-Array-Values">16.8 Constructing Array Values</a></li>
292 <li><a id="toc-Arrays-of-Variable-Length-1" href="Arrays-of-Variable-Length.html#Arrays-of-Variable-Length">16.9 Arrays of Variable Length</a></li>
293 </ul></li>
294 <li><a id="toc-Enumeration-Types-1" href="Enumeration-Types.html#Enumeration-Types">17 Enumeration Types</a></li>
295 <li><a id="toc-Defining-Typedef-Names-1" href="Defining-Typedef-Names.html#Defining-Typedef-Names">18 Defining Typedef Names</a></li>
296 <li><a id="toc-Statements-1" href="Statements.html#Statements">19 Statements</a>
297 <ul class="no-bullet">
298 <li><a id="toc-Expression-Statement-1" href="Expression-Statement.html#Expression-Statement">19.1 Expression Statement</a></li>
299 <li><a id="toc-if-Statement-1" href="if-Statement.html#if-Statement">19.2 <code>if</code> Statement</a></li>
300 <li><a id="toc-if_002delse-Statement-1" href="if_002delse-Statement.html#if_002delse-Statement">19.3 <code>if-else</code> Statement</a></li>
301 <li><a id="toc-Blocks-1" href="Blocks.html#Blocks">19.4 Blocks</a></li>
302 <li><a id="toc-return-Statement-1" href="return-Statement.html#return-Statement">19.5 <code>return</code> Statement</a></li>
303 <li><a id="toc-Loop-Statements-1" href="Loop-Statements.html#Loop-Statements">19.6 Loop Statements</a>
304 <ul class="no-bullet">
305 <li><a id="toc-while-Statement-1" href="while-Statement.html#while-Statement">19.6.1 <code>while</code> Statement</a></li>
306 <li><a id="toc-do_002dwhile-Statement-1" href="do_002dwhile-Statement.html#do_002dwhile-Statement">19.6.2 <code>do-while</code> Statement</a></li>
307 <li><a id="toc-break-Statement-1" href="break-Statement.html#break-Statement">19.6.3 <code>break</code> Statement</a></li>
308 <li><a id="toc-for-Statement-1" href="for-Statement.html#for-Statement">19.6.4 <code>for</code> Statement</a></li>
309 <li><a id="toc-Example-of-for-1" href="Example-of-for.html#Example-of-for">19.6.5 Example of <code>for</code></a></li>
310 <li><a id="toc-Omitted-for_002dExpressions-1" href="Omitted-for_002dExpressions.html#Omitted-for_002dExpressions">19.6.6 Omitted <code>for</code>-Expressions</a></li>
311 <li><a id="toc-for_002dIndex-Declarations-1" href="for_002dIndex-Declarations.html#for_002dIndex-Declarations">19.6.7 <code>for</code>-Index Declarations</a></li>
312 <li><a id="toc-continue-Statement-1" href="continue-Statement.html#continue-Statement">19.6.8 <code>continue</code> Statement</a></li>
313 </ul></li>
314 <li><a id="toc-switch-Statement-1" href="switch-Statement.html#switch-Statement">19.7 <code>switch</code> Statement</a></li>
315 <li><a id="toc-Example-of-switch" href="switch-Example.html#switch-Example">19.8 Example of <code>switch</code></a></li>
316 <li><a id="toc-Duff_0027s-Device" href="Duffs-Device.html#Duffs-Device">19.9 Duff&rsquo;s Device</a></li>
317 <li><a id="toc-Case-Ranges-1" href="Case-Ranges.html#Case-Ranges">19.10 Case Ranges</a></li>
318 <li><a id="toc-Null-Statement-1" href="Null-Statement.html#Null-Statement">19.11 Null Statement</a></li>
319 <li><a id="toc-goto-Statement-and-Labels" href="goto-Statement.html#goto-Statement">19.12 <code>goto</code> Statement and Labels</a></li>
320 <li><a id="toc-Locally-Declared-Labels" href="Local-Labels.html#Local-Labels">19.13 Locally Declared Labels</a></li>
321 <li><a id="toc-Labels-as-Values-1" href="Labels-as-Values.html#Labels-as-Values">19.14 Labels as Values</a>
322 <ul class="no-bullet">
323 <li><a id="toc-Label-Value-Uses-1" href="Label-Value-Uses.html#Label-Value-Uses">19.14.1 Label Value Uses</a></li>
324 <li><a id="toc-Label-Value-Caveats-1" href="Label-Value-Caveats.html#Label-Value-Caveats">19.14.2 Label Value Caveats</a></li>
325 </ul></li>
326 <li><a id="toc-Statements-and-Declarations-in-Expressions" href="Statement-Exprs.html#Statement-Exprs">19.15 Statements and Declarations in Expressions</a></li>
327 </ul></li>
328 <li><a id="toc-Variables-1" href="Variables.html#Variables">20 Variables</a>
329 <ul class="no-bullet">
330 <li><a id="toc-Variable-Declarations-1" href="Variable-Declarations.html#Variable-Declarations">20.1 Variable Declarations</a>
331 <ul class="no-bullet">
332 <li><a id="toc-Declaring-Arrays-and-Pointers-1" href="Declaring-Arrays-and-Pointers.html#Declaring-Arrays-and-Pointers">20.1.1 Declaring Arrays and Pointers</a></li>
333 <li><a id="toc-Combining-Variable-Declarations-1" href="Combining-Variable-Declarations.html#Combining-Variable-Declarations">20.1.2 Combining Variable Declarations</a></li>
334 </ul></li>
335 <li><a id="toc-Initializers-1" href="Initializers.html#Initializers">20.2 Initializers</a></li>
336 <li><a id="toc-Designated-Initializers" href="Designated-Inits.html#Designated-Inits">20.3 Designated Initializers</a></li>
337 <li><a id="toc-Referring-to-a-Type-with-_005f_005fauto_005ftype" href="Auto-Type.html#Auto-Type">20.4 Referring to a Type with <code>__auto_type</code></a></li>
338 <li><a id="toc-Local-Variables-1" href="Local-Variables.html#Local-Variables">20.5 Local Variables</a></li>
339 <li><a id="toc-File_002dScope-Variables-1" href="File_002dScope-Variables.html#File_002dScope-Variables">20.6 File-Scope Variables</a></li>
340 <li><a id="toc-Static-Local-Variables-1" href="Static-Local-Variables.html#Static-Local-Variables">20.7 Static Local Variables</a></li>
341 <li><a id="toc-extern-Declarations" href="Extern-Declarations.html#Extern-Declarations">20.8 <code>extern</code> Declarations</a></li>
342 <li><a id="toc-Allocating-File_002dScope-Variables" href="Allocating-File_002dScope.html#Allocating-File_002dScope">20.9 Allocating File-Scope Variables</a></li>
343 <li><a id="toc-auto-and-register-1" href="auto-and-register.html#auto-and-register">20.10 <code>auto</code> and <code>register</code></a></li>
344 <li><a id="toc-Omitting-Types-in-Declarations" href="Omitting-Types.html#Omitting-Types">20.11 Omitting Types in Declarations</a></li>
345 </ul></li>
346 <li><a id="toc-Type-Qualifiers-1" href="Type-Qualifiers.html#Type-Qualifiers">21 Type Qualifiers</a>
347 <ul class="no-bullet">
348 <li><a id="toc-const-Variables-and-Fields" href="const.html#const">21.1 <code>const</code> Variables and Fields</a></li>
349 <li><a id="toc-volatile-Variables-and-Fields" href="volatile.html#volatile">21.2 <code>volatile</code> Variables and Fields</a></li>
350 <li><a id="toc-restrict_002dQualified-Pointers" href="restrict-Pointers.html#restrict-Pointers">21.3 <code>restrict</code>-Qualified Pointers</a></li>
351 <li><a id="toc-restrict-Pointer-Example-1" href="restrict-Pointer-Example.html#restrict-Pointer-Example">21.4 <code>restrict</code> Pointer Example</a></li>
352 </ul></li>
353 <li><a id="toc-Functions-1" href="Functions.html#Functions">22 Functions</a>
354 <ul class="no-bullet">
355 <li><a id="toc-Function-Definitions-1" href="Function-Definitions.html#Function-Definitions">22.1 Function Definitions</a>
356 <ul class="no-bullet">
357 <li><a id="toc-Function-Parameter-Variables-1" href="Function-Parameter-Variables.html#Function-Parameter-Variables">22.1.1 Function Parameter Variables</a></li>
358 <li><a id="toc-Forward-Function-Declarations-1" href="Forward-Function-Declarations.html#Forward-Function-Declarations">22.1.2 Forward Function Declarations</a></li>
359 <li><a id="toc-Static-Functions-1" href="Static-Functions.html#Static-Functions">22.1.3 Static Functions</a></li>
360 <li><a id="toc-Arrays-as-Parameters-1" href="Arrays-as-Parameters.html#Arrays-as-Parameters">22.1.4 Arrays as Parameters</a>
361 <ul class="no-bullet">
362 <li><a id="toc-Array-parameters-are-pointers" href="Array-Parm-Pointer.html#Array-Parm-Pointer">22.1.4.1 Array parameters are pointers</a></li>
363 <li><a id="toc-Passing-array-arguments" href="Passing-Array-Args.html#Passing-Array-Args">22.1.4.2 Passing array arguments</a></li>
364 <li><a id="toc-Type-qualifiers-on-array-parameters" href="Array-Parm-Qualifiers.html#Array-Parm-Qualifiers">22.1.4.3 Type qualifiers on array parameters</a></li>
365 </ul></li>
366 <li><a id="toc-Functions-That-Accept-Structure-Arguments" href="Structs-as-Parameters.html#Structs-as-Parameters">22.1.5 Functions That Accept Structure Arguments</a></li>
367 </ul></li>
368 <li><a id="toc-Function-Declarations-1" href="Function-Declarations.html#Function-Declarations">22.2 Function Declarations</a></li>
369 <li><a id="toc-Function-Calls-1" href="Function-Calls.html#Function-Calls">22.3 Function Calls</a></li>
370 <li><a id="toc-Function-Call-Semantics-1" href="Function-Call-Semantics.html#Function-Call-Semantics">22.4 Function Call Semantics</a></li>
371 <li><a id="toc-Function-Pointers-1" href="Function-Pointers.html#Function-Pointers">22.5 Function Pointers</a>
372 <ul class="no-bullet">
373 <li><a id="toc-Declaring-Function-Pointers-1" href="Declaring-Function-Pointers.html#Declaring-Function-Pointers">22.5.1 Declaring Function Pointers</a></li>
374 <li><a id="toc-Assigning-Function-Pointers-1" href="Assigning-Function-Pointers.html#Assigning-Function-Pointers">22.5.2 Assigning Function Pointers</a></li>
375 <li><a id="toc-Calling-Function-Pointers-1" href="Calling-Function-Pointers.html#Calling-Function-Pointers">22.5.3 Calling Function Pointers</a></li>
376 </ul></li>
377 <li><a id="toc-The-main-Function-1" href="The-main-Function.html#The-main-Function">22.6 The <code>main</code> Function</a>
378 <ul class="no-bullet">
379 <li><a id="toc-Returning-Values-from-main" href="Values-from-main.html#Values-from-main">22.6.1 Returning Values from <code>main</code></a></li>
380 <li><a id="toc-Accessing-Command_002dline-Parameters" href="Command_002dline-Parameters.html#Command_002dline-Parameters">22.6.2 Accessing Command-line Parameters</a></li>
381 <li><a id="toc-Accessing-Environment-Variables" href="Environment-Variables.html#Environment-Variables">22.6.3 Accessing Environment Variables</a></li>
382 </ul></li>
383 <li><a id="toc-Advanced-Function-Features" href="Advanced-Definitions.html#Advanced-Definitions">22.7 Advanced Function Features</a>
384 <ul class="no-bullet">
385 <li><a id="toc-Variable_002dLength-Array-Parameters-1" href="Variable_002dLength-Array-Parameters.html#Variable_002dLength-Array-Parameters">22.7.1 Variable-Length Array Parameters</a></li>
386 <li><a id="toc-Variable_002dLength-Parameter-Lists" href="Variable-Number-of-Arguments.html#Variable-Number-of-Arguments">22.7.2 Variable-Length Parameter Lists</a></li>
387 <li><a id="toc-Nested-Functions-1" href="Nested-Functions.html#Nested-Functions">22.7.3 Nested Functions</a></li>
388 <li><a id="toc-Inline-Function-Definitions-1" href="Inline-Function-Definitions.html#Inline-Function-Definitions">22.7.4 Inline Function Definitions</a></li>
389 </ul></li>
390 <li><a id="toc-Obsolete-Function-Features" href="Obsolete-Definitions.html#Obsolete-Definitions">22.8 Obsolete Function Features</a>
391 <ul class="no-bullet">
392 <li><a id="toc-Older-GNU-C-Inlining" href="Old-GNU-Inlining.html#Old-GNU-Inlining">22.8.1 Older GNU C Inlining</a></li>
393 <li><a id="toc-Old_002dStyle-Function-Definitions-1" href="Old_002dStyle-Function-Definitions.html#Old_002dStyle-Function-Definitions">22.8.2 Old-Style Function Definitions</a></li>
394 </ul></li>
395 </ul></li>
396 <li><a id="toc-Compatible-Types-1" href="Compatible-Types.html#Compatible-Types">23 Compatible Types</a></li>
397 <li><a id="toc-Type-Conversions-1" href="Type-Conversions.html#Type-Conversions">24 Type Conversions</a>
398 <ul class="no-bullet">
399 <li><a id="toc-Explicit-Type-Conversion-1" href="Explicit-Type-Conversion.html#Explicit-Type-Conversion">24.1 Explicit Type Conversion</a></li>
400 <li><a id="toc-Assignment-Type-Conversions-1" href="Assignment-Type-Conversions.html#Assignment-Type-Conversions">24.2 Assignment Type Conversions</a></li>
401 <li><a id="toc-Argument-Promotions-1" href="Argument-Promotions.html#Argument-Promotions">24.3 Argument Promotions</a></li>
402 <li><a id="toc-Operand-Promotions-1" href="Operand-Promotions.html#Operand-Promotions">24.4 Operand Promotions</a></li>
403 <li><a id="toc-Common-Type-1" href="Common-Type.html#Common-Type">24.5 Common Type</a></li>
404 </ul></li>
405 <li><a id="toc-Scope-1" href="Scope.html#Scope">25 Scope</a></li>
406 <li><a id="toc-Preprocessing-1" href="Preprocessing.html#Preprocessing">26 Preprocessing</a>
407 <ul class="no-bullet">
408 <li><a id="toc-Preprocessing-Overview" href="Preproc-Overview.html#Preproc-Overview">26.1 Preprocessing Overview</a></li>
409 <li><a id="toc-Directives-1" href="Directives.html#Directives">26.2 Directives</a></li>
410 <li><a id="toc-Preprocessing-Tokens-1" href="Preprocessing-Tokens.html#Preprocessing-Tokens">26.3 Preprocessing Tokens</a></li>
411 <li><a id="toc-Header-Files-1" href="Header-Files.html#Header-Files">26.4 Header Files</a>
412 <ul class="no-bullet">
413 <li><a id="toc-_0023include-Syntax" href="include-Syntax.html#include-Syntax">26.4.1 <code>#include</code> Syntax</a></li>
414 <li><a id="toc-_0023include-Operation" href="include-Operation.html#include-Operation">26.4.2 <code>#include</code> Operation</a></li>
415 <li><a id="toc-Search-Path-1" href="Search-Path.html#Search-Path">26.4.3 Search Path</a></li>
416 <li><a id="toc-Once_002dOnly-Headers-1" href="Once_002dOnly-Headers.html#Once_002dOnly-Headers">26.4.4 Once-Only Headers</a></li>
417 <li><a id="toc-Computed-Includes-1" href="Computed-Includes.html#Computed-Includes">26.4.5 Computed Includes</a></li>
418 </ul></li>
419 <li><a id="toc-Macros-1" href="Macros.html#Macros">26.5 Macros</a>
420 <ul class="no-bullet">
421 <li><a id="toc-Object_002dlike-Macros-1" href="Object_002dlike-Macros.html#Object_002dlike-Macros">26.5.1 Object-like Macros</a></li>
422 <li><a id="toc-Function_002dlike-Macros-1" href="Function_002dlike-Macros.html#Function_002dlike-Macros">26.5.2 Function-like Macros</a></li>
423 <li><a id="toc-Macro-Arguments-1" href="Macro-Arguments.html#Macro-Arguments">26.5.3 Macro Arguments</a></li>
424 <li><a id="toc-Stringification-1" href="Stringification.html#Stringification">26.5.4 Stringification</a></li>
425 <li><a id="toc-Concatenation-1" href="Concatenation.html#Concatenation">26.5.5 Concatenation</a></li>
426 <li><a id="toc-Variadic-Macros-1" href="Variadic-Macros.html#Variadic-Macros">26.5.6 Variadic Macros</a></li>
427 <li><a id="toc-Predefined-Macros-1" href="Predefined-Macros.html#Predefined-Macros">26.5.7 Predefined Macros</a></li>
428 <li><a id="toc-Undefining-and-Redefining-Macros-1" href="Undefining-and-Redefining-Macros.html#Undefining-and-Redefining-Macros">26.5.8 Undefining and Redefining Macros</a></li>
429 <li><a id="toc-Directives-Within-Macro-Arguments-1" href="Directives-Within-Macro-Arguments.html#Directives-Within-Macro-Arguments">26.5.9 Directives Within Macro Arguments</a></li>
430 <li><a id="toc-Macro-Pitfalls-1" href="Macro-Pitfalls.html#Macro-Pitfalls">26.5.10 Macro Pitfalls</a>
431 <ul class="no-bullet">
432 <li><a id="toc-Misnesting-1" href="Misnesting.html#Misnesting">26.5.10.1 Misnesting</a></li>
433 <li><a id="toc-Operator-Precedence-Problems-1" href="Operator-Precedence-Problems.html#Operator-Precedence-Problems">26.5.10.2 Operator Precedence Problems</a></li>
434 <li><a id="toc-Swallowing-the-Semicolon-1" href="Swallowing-the-Semicolon.html#Swallowing-the-Semicolon">26.5.10.3 Swallowing the Semicolon</a></li>
435 <li><a id="toc-Duplication-of-Side-Effects-1" href="Duplication-of-Side-Effects.html#Duplication-of-Side-Effects">26.5.10.4 Duplication of Side Effects</a></li>
436 <li><a id="toc-Using-_005f_005fauto_005ftype-for-Local-Variables" href="Macros-and-Auto-Type.html#Macros-and-Auto-Type">26.5.10.5 Using <code>__auto_type</code> for Local Variables</a></li>
437 <li><a id="toc-Self_002dReferential-Macros-1" href="Self_002dReferential-Macros.html#Self_002dReferential-Macros">26.5.10.6 Self-Referential Macros</a></li>
438 <li><a id="toc-Argument-Prescan-1" href="Argument-Prescan.html#Argument-Prescan">26.5.10.7 Argument Prescan</a></li>
439 </ul></li>
440 </ul></li>
441 <li><a id="toc-Conditionals-1" href="Conditionals.html#Conditionals">26.6 Conditionals</a>
442 <ul class="no-bullet">
443 <li><a id="toc-Uses-of-Conditional-Directives" href="Conditional-Uses.html#Conditional-Uses">26.6.1 Uses of Conditional Directives</a></li>
444 <li><a id="toc-Syntax-of-Preprocessing-Conditionals" href="Conditional-Syntax.html#Conditional-Syntax">26.6.2 Syntax of Preprocessing Conditionals</a>
445 <ul class="no-bullet">
446 <li><a id="toc-The-_0023ifdef-directive" href="ifdef.html#ifdef">26.6.2.1 The <code>#ifdef</code> directive</a></li>
447 <li><a id="toc-The-_0023if-directive" href="if.html#if">26.6.2.2 The <code>#if</code> directive</a></li>
448 <li><a id="toc-The-defined-test" href="defined.html#defined">26.6.2.3 The <code>defined</code> test</a></li>
449 <li><a id="toc-The-_0023else-directive" href="else.html#else">26.6.2.4 The <code>#else</code> directive</a></li>
450 <li><a id="toc-The-_0023elif-directive" href="elif.html#elif">26.6.2.5 The <code>#elif</code> directive</a></li>
451 </ul></li>
452 <li><a id="toc-Deleted-Code-1" href="Deleted-Code.html#Deleted-Code">26.6.3 Deleted Code</a></li>
453 </ul></li>
454 <li><a id="toc-Diagnostics-1" href="Diagnostics.html#Diagnostics">26.7 Diagnostics</a></li>
455 <li><a id="toc-Line-Control-1" href="Line-Control.html#Line-Control">26.8 Line Control</a></li>
456 <li><a id="toc-Null-Directive-1" href="Null-Directive.html#Null-Directive">26.9 Null Directive</a></li>
457 </ul></li>
458 <li><a id="toc-Integers-in-Depth-1" href="Integers-in-Depth.html#Integers-in-Depth">27 Integers in Depth</a>
459 <ul class="no-bullet">
460 <li><a id="toc-Integer-Representations-1" href="Integer-Representations.html#Integer-Representations">27.1 Integer Representations</a></li>
461 <li><a id="toc-Maximum-and-Minimum-Values-1" href="Maximum-and-Minimum-Values.html#Maximum-and-Minimum-Values">27.2 Maximum and Minimum Values</a></li>
462 </ul></li>
463 <li><a id="toc-Floating-Point-in-Depth-1" href="Floating-Point-in-Depth.html#Floating-Point-in-Depth">28 Floating Point in Depth</a>
464 <ul class="no-bullet">
465 <li><a id="toc-Floating_002dPoint-Representations" href="Floating-Representations.html#Floating-Representations">28.1 Floating-Point Representations</a></li>
466 <li><a id="toc-Floating_002dPoint-Type-Specifications" href="Floating-Type-Specs.html#Floating-Type-Specs">28.2 Floating-Point Type Specifications</a></li>
467 <li><a id="toc-Special-Floating_002dPoint-Values" href="Special-Float-Values.html#Special-Float-Values">28.3 Special Floating-Point Values</a></li>
468 <li><a id="toc-Invalid-Optimizations-1" href="Invalid-Optimizations.html#Invalid-Optimizations">28.4 Invalid Optimizations</a></li>
469 <li><a id="toc-Floating-Arithmetic-Exception-Flags" href="Exception-Flags.html#Exception-Flags">28.5 Floating Arithmetic Exception Flags</a></li>
470 <li><a id="toc-Exact-Floating_002dPoint-Arithmetic" href="Exact-Floating_002dPoint.html#Exact-Floating_002dPoint">28.6 Exact Floating-Point Arithmetic</a></li>
471 <li><a id="toc-Rounding-1" href="Rounding.html#Rounding">28.7 Rounding</a></li>
472 <li><a id="toc-Rounding-Issues-1" href="Rounding-Issues.html#Rounding-Issues">28.8 Rounding Issues</a></li>
473 <li><a id="toc-Significance-Loss-1" href="Significance-Loss.html#Significance-Loss">28.9 Significance Loss</a></li>
474 <li><a id="toc-Fused-Multiply_002dAdd-1" href="Fused-Multiply_002dAdd.html#Fused-Multiply_002dAdd">28.10 Fused Multiply-Add</a></li>
475 <li><a id="toc-Error-Recovery-1" href="Error-Recovery.html#Error-Recovery">28.11 Error Recovery</a></li>
476 <li><a id="toc-Exact-Floating_002dPoint-Constants" href="Exact-Floating-Constants.html#Exact-Floating-Constants">28.12 Exact Floating-Point Constants</a></li>
477 <li><a id="toc-Handling-Infinity-1" href="Handling-Infinity.html#Handling-Infinity">28.13 Handling Infinity</a></li>
478 <li><a id="toc-Handling-NaN-1" href="Handling-NaN.html#Handling-NaN">28.14 Handling NaN</a></li>
479 <li><a id="toc-Signed-Zeros-1" href="Signed-Zeros.html#Signed-Zeros">28.15 Signed Zeros</a></li>
480 <li><a id="toc-Scaling-by-Powers-of-the-Base" href="Scaling-by-the-Base.html#Scaling-by-the-Base">28.16 Scaling by Powers of the Base</a></li>
481 <li><a id="toc-Rounding-Control-1" href="Rounding-Control.html#Rounding-Control">28.17 Rounding Control</a></li>
482 <li><a id="toc-Machine-Epsilon-1" href="Machine-Epsilon.html#Machine-Epsilon">28.18 Machine Epsilon</a></li>
483 <li><a id="toc-Complex-Arithmetic-1" href="Complex-Arithmetic.html#Complex-Arithmetic">28.19 Complex Arithmetic</a></li>
484 <li><a id="toc-Round_002dTrip-Base-Conversion-1" href="Round_002dTrip-Base-Conversion.html#Round_002dTrip-Base-Conversion">28.20 Round-Trip Base Conversion</a></li>
485 <li><a id="toc-Further-Reading-1" href="Further-Reading.html#Further-Reading">28.21 Further Reading</a></li>
486 </ul></li>
487 <li><a id="toc-Compilation-1" href="Compilation.html#Compilation">29 Compilation</a></li>
488 <li><a id="toc-Directing-Compilation-1" href="Directing-Compilation.html#Directing-Compilation">30 Directing Compilation</a>
489 <ul class="no-bullet">
490 <li><a id="toc-Pragmas-1" href="Pragmas.html#Pragmas">30.1 Pragmas</a>
491 <ul class="no-bullet">
492 <li><a id="toc-Pragma-Basics-1" href="Pragma-Basics.html#Pragma-Basics">30.1.1 Pragma Basics</a></li>
493 <li><a id="toc-Severity-Pragmas-1" href="Severity-Pragmas.html#Severity-Pragmas">30.1.2 Severity Pragmas</a></li>
494 <li><a id="toc-Optimization-Pragmas-1" href="Optimization-Pragmas.html#Optimization-Pragmas">30.1.3 Optimization Pragmas</a></li>
495 </ul></li>
496 <li><a id="toc-Static-Assertions-1" href="Static-Assertions.html#Static-Assertions">30.2 Static Assertions</a></li>
497 </ul></li>
498 <li><a id="toc-Type-Alignment-1" href="Type-Alignment.html#Type-Alignment">Appendix A Type Alignment</a></li>
499 <li><a id="toc-Aliasing-1" href="Aliasing.html#Aliasing">Appendix B Aliasing</a>
500 <ul class="no-bullet">
501 <li><a id="toc-Aliasing-and-Alignment" href="Aliasing-Alignment.html#Aliasing-Alignment">B.1 Aliasing and Alignment</a></li>
502 <li><a id="toc-Aliasing-and-Length" href="Aliasing-Length.html#Aliasing-Length">B.2 Aliasing and Length</a></li>
503 <li><a id="toc-Type-Rules-for-Aliasing" href="Aliasing-Type-Rules.html#Aliasing-Type-Rules">B.3 Type Rules for Aliasing</a></li>
504 </ul></li>
505 <li><a id="toc-Digraphs-1" href="Digraphs.html#Digraphs">Appendix C Digraphs</a></li>
506 <li><a id="toc-Attributes-in-Declarations" href="Attributes.html#Attributes">Appendix D Attributes in Declarations</a></li>
507 <li><a id="toc-Signals-1" href="Signals.html#Signals">Appendix E Signals</a></li>
508 <li><a id="toc-GNU-Free-Documentation-License-1" href="GNU-Free-Documentation-License.html#GNU-Free-Documentation-License">Appendix F GNU Free Documentation License</a></li>
509 <li><a id="toc-Index-of-Symbols-and-Keywords" href="Symbol-Index.html#Symbol-Index" rel="index">Index of Symbols and Keywords</a></li>
510 <li><a id="toc-Concept-Index-1" href="Concept-Index.html#Concept-Index" rel="index">Concept Index</a></li>
511</ul>
512</div>
513
514
515
516<span id="Top"></span><div class="header">
517<p>
518Next: <a href="The-First-Example.html" accesskey="n" rel="next">The First Example</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Index.html" title="Index" rel="index">Index</a>]</p>
519</div>
520<hr>
521<span id="GNU-C-Manual"></span><h1 class="top">GNU C Manual</h1>
522
523<p>This manual explains the C language for use with the GNU Compiler
524Collection (GCC) on the GNU/Linux system and other systems. We refer
525to this dialect as GNU C. If you already know C, you can use this as
526a reference manual.
527</p>
528<p>If you understand basic concepts of programming but know nothing about
529C, you can read this manual sequentially from the beginning to learn
530the C language.
531</p>
532<p>If you are a beginner to programming, we recommend you first learn a
533language with automatic garbage collection and no explicit pointers,
534rather than starting with C. Good choices include Lisp, Scheme,
535Python and Java. C&rsquo;s explicit pointers mean that programmers must be
536careful to avoid certain kinds of errors.
537</p>
538<p>C is a venerable language; it was first used in 1973. The GNU C
539Compiler, which was subsequently extended into the GNU Compiler
540Collection, was first released in 1987. Other important languages
541were designed based on C: once you know C, it gives you a useful base
542for learning C<tt>++</tt>, C#, Java, Scala, D, Go, and more.
543</p>
544<p>The special advantage of C is that it is fairly simple while allowing
545close access to the computer&rsquo;s hardware, which previously required
546writing in assembler language to describe the individual machine
547instructions. Some have called C a &ldquo;high-level assembler language&rdquo;
548because of its explicit pointers and lack of automatic management of
549storage. As one wag put it, &ldquo;C combines the power of assembler
550language with the convenience of assembler language.&rdquo; However, C is
551far more portable, and much easier to read and write, than assembler
552language.
553</p>
554<p>This manual focuses on the GNU C language supported by the GNU
555Compiler Collection, version ???. When a construct may be absent or
556work differently in other C compilers, we say so. When it is not part
557of ISO standard C, we say it is a &ldquo;GNU C extension,&rdquo; because it is
558useful to know that; however, other dialects and standards are not the
559focus of this manual. We keep those notes short, unless it is vital
560to say more. For the same reason, we hardly mention C<tt>++</tt> or other
561languages that the GNU Compiler Collection supports.
562</p>
563<p>Some aspects of the meaning of C programs depend on the target
564platform: which computer, and which operating system, the compiled
565code will run on. Where this is the case, we say so.
566</p>
567<p>The C language provides no built-in facilities for performing such
568common operations as input/output, memory management, string
569manipulation, and the like. Instead, these facilities are defined in
570a standard library, which is automatically available in every C
571program. See <a href="https://www.gnu.org/software/libc/manual/html_node/index.html#Top">The GNU C Library</a> in <cite>The GNU C Library
572Reference Manual</cite>.
573</p>
574<p>This manual incorporates the former GNU C Preprocessor Manual, which
575was among the earliest GNU Manuals. It also uses some text from the
576earlier GNU C Manual that was written by Trevis Rothwell and James
577Youngman.
578</p>
579<p>GNU C has many obscure features, each one either for historical
580compatibility or meant for very special situations. We have left them
581to a companion manual, the GNU C Obscurities Manual, which will be
582published digitally later.
583</p>
584<table class="menu" border="0" cellspacing="0">
585<tr><td align="left" valign="top">&bull; <a href="The-First-Example.html" accesskey="1">The First Example</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Getting started with basic C code.
586</td></tr>
587<tr><td align="left" valign="top">&bull; <a href="Complete-Program.html" accesskey="2">Complete Program</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A whole example program
588 that can be compiled and run.
589</td></tr>
590<tr><td align="left" valign="top">&bull; <a href="Storage.html" accesskey="3">Storage</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Basic layout of storage; bytes.
591</td></tr>
592<tr><td align="left" valign="top">&bull; <a href="Beyond-Integers.html" accesskey="4">Beyond Integers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Exploring different numeric types.
593</td></tr>
594<tr><td align="left" valign="top">&bull; <a href="Lexical-Syntax.html" accesskey="5">Lexical Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The various lexical components of C programs.
595</td></tr>
596<tr><td align="left" valign="top">&bull; <a href="Arithmetic.html" accesskey="6">Arithmetic</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Numeric computations.
597</td></tr>
598<tr><td align="left" valign="top">&bull; <a href="Assignment-Expressions.html" accesskey="7">Assignment Expressions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Storing values in variables.
599</td></tr>
600<tr><td align="left" valign="top">&bull; <a href="Execution-Control-Expressions.html" accesskey="8">Execution Control Expressions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Expressions combining values in various ways.
601</td></tr>
602<tr><td align="left" valign="top">&bull; <a href="Binary-Operator-Grammar.html" accesskey="9">Binary Operator Grammar</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">An overview of operator precedence.
603</td></tr>
604<tr><td align="left" valign="top">&bull; <a href="Order-of-Execution.html">Order of Execution</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The order of program execution.
605</td></tr>
606<tr><td align="left" valign="top">&bull; <a href="Primitive-Types.html">Primitive Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">More details about primitive data types.
607</td></tr>
608<tr><td align="left" valign="top">&bull; <a href="Constants.html">Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Explicit constant values:
609 details and examples.
610</td></tr>
611<tr><td align="left" valign="top">&bull; <a href="Type-Size.html">Type Size</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The memory space occupied by a type.
612</td></tr>
613<tr><td align="left" valign="top">&bull; <a href="Pointers.html">Pointers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Creating and manipulating memory pointers.
614</td></tr>
615<tr><td align="left" valign="top">&bull; <a href="Structures.html">Structures</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Compound data types built
616 by grouping other types.
617</td></tr>
618<tr><td align="left" valign="top">&bull; <a href="Arrays.html">Arrays</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Creating and manipulating arrays.
619</td></tr>
620<tr><td align="left" valign="top">&bull; <a href="Enumeration-Types.html">Enumeration Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Sets of integers with named values.
621</td></tr>
622<tr><td align="left" valign="top">&bull; <a href="Defining-Typedef-Names.html">Defining Typedef Names</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using <code>typedef</code> to define type names.
623</td></tr>
624<tr><td align="left" valign="top">&bull; <a href="Statements.html">Statements</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Controling program flow.
625</td></tr>
626<tr><td align="left" valign="top">&bull; <a href="Variables.html">Variables</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Details about declaring, initializing,
627 and using variables.
628</td></tr>
629<tr><td align="left" valign="top">&bull; <a href="Type-Qualifiers.html">Type Qualifiers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Mark variables for certain intended uses.
630</td></tr>
631<tr><td align="left" valign="top">&bull; <a href="Functions.html">Functions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Declaring, defining, and calling functions.
632</td></tr>
633<tr><td align="left" valign="top">&bull; <a href="Compatible-Types.html">Compatible Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to tell if two types are compatible
634 with each other.
635</td></tr>
636<tr><td align="left" valign="top">&bull; <a href="Type-Conversions.html">Type Conversions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Converting between types.
637</td></tr>
638<tr><td align="left" valign="top">&bull; <a href="Scope.html">Scope</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Different categories of identifier scope.
639</td></tr>
640<tr><td align="left" valign="top">&bull; <a href="Preprocessing.html">Preprocessing</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using the GNU C preprocessor.
641</td></tr>
642<tr><td align="left" valign="top">&bull; <a href="Integers-in-Depth.html">Integers in Depth</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How integer numbers are represented.
643</td></tr>
644<tr><td align="left" valign="top">&bull; <a href="Floating-Point-in-Depth.html">Floating Point in Depth</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How floating-point numbers are represented.
645</td></tr>
646<tr><td align="left" valign="top">&bull; <a href="Compilation.html">Compilation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to compile multi-file programs.
647</td></tr>
648<tr><td align="left" valign="top">&bull; <a href="Directing-Compilation.html">Directing Compilation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Operations that affect compilation
649 but don&rsquo;t change the program.
650</td></tr>
651<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
652
653Appendices
654
655</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Type-Alignment.html">Type Alignment</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Where in memory a type can validly start.
656</td></tr>
657<tr><td align="left" valign="top">&bull; <a href="Aliasing.html">Aliasing</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Accessing the same data in two types.
658</td></tr>
659<tr><td align="left" valign="top">&bull; <a href="Digraphs.html">Digraphs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Two-character aliases for some characters.
660</td></tr>
661<tr><td align="left" valign="top">&bull; <a href="Attributes.html">Attributes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Specifying additional information
662 in a declaration.
663</td></tr>
664<tr><td align="left" valign="top">&bull; <a href="Signals.html">Signals</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Fatal errors triggered in various scenarios.
665</td></tr>
666<tr><td align="left" valign="top">&bull; <a href="GNU-Free-Documentation-License.html">GNU Free Documentation License</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The license for this manual.
667</td></tr>
668<tr><td align="left" valign="top">&bull; <a href="Symbol-Index.html" rel="index">Symbol Index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Keyword and symbol index.
669</td></tr>
670<tr><td align="left" valign="top">&bull; <a href="Concept-Index.html" rel="index">Concept Index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Detailed topical index.
671</td></tr>
672<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
673
674</pre></th></tr><tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">&mdash; The Detailed Node Listing &mdash;
675
676</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Recursive-Fibonacci.html">Recursive Fibonacci</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Writing a simple function recursively.
677</td></tr>
678<tr><td align="left" valign="top">&bull; <a href="Stack.html">Stack</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Each function call uses space in the stack.
679</td></tr>
680<tr><td align="left" valign="top">&bull; <a href="Iterative-Fibonacci.html">Iterative Fibonacci</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Writing the same function iteratively.
681</td></tr>
682<tr><td align="left" valign="top">&bull; <a href="Complete-Example.html">Complete Example</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Turn the simple function into a full program.
683</td></tr>
684<tr><td align="left" valign="top">&bull; <a href="Complete-Explanation.html">Complete Explanation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Explanation of each part of the example.
685</td></tr>
686<tr><td align="left" valign="top">&bull; <a href="Complete-Line_002dby_002dLine.html">Complete Line-by-Line</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Explaining each line of the example.
687</td></tr>
688<tr><td align="left" valign="top">&bull; <a href="Compile-Example.html">Compile Example</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using GCC to compile the example.
689</td></tr>
690<tr><td align="left" valign="top">&bull; <a href="Float-Example.html">Float Example</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A function that uses floating-point numbers.
691</td></tr>
692<tr><td align="left" valign="top">&bull; <a href="Array-Example.html">Array Example</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A function that works with arrays.
693</td></tr>
694<tr><td align="left" valign="top">&bull; <a href="Array-Example-Call.html">Array Example Call</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to call that function.
695</td></tr>
696<tr><td align="left" valign="top">&bull; <a href="Array-Example-Variations.html">Array Example Variations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Different ways to write the call example.
697</td></tr>
698<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
699
700Lexical Syntax
701
702</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="English.html">English</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Write programs in English!
703</td></tr>
704<tr><td align="left" valign="top">&bull; <a href="Characters.html">Characters</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The characters allowed in C programs.
705</td></tr>
706<tr><td align="left" valign="top">&bull; <a href="Whitespace.html">Whitespace</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The particulars of whitespace characters.
707</td></tr>
708<tr><td align="left" valign="top">&bull; <a href="Comments.html">Comments</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to include comments in C code.
709</td></tr>
710<tr><td align="left" valign="top">&bull; <a href="Identifiers.html">Identifiers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to form identifiers (names).
711</td></tr>
712<tr><td align="left" valign="top">&bull; <a href="Operators_002fPunctuation.html">Operators/Punctuation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Characters used as operators or punctuation.
713</td></tr>
714<tr><td align="left" valign="top">&bull; <a href="Line-Continuation.html">Line Continuation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Splitting one line into multiple lines.
715</td></tr>
716<tr><td align="left" valign="top">&bull; <a href="Digraphs.html">Digraphs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Two-character substitutes for some characters.
717</td></tr>
718<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
719
720Arithmetic
721
722</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Basic-Arithmetic.html">Basic Arithmetic</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Addition, subtraction, multiplication,
723 and division.
724</td></tr>
725<tr><td align="left" valign="top">&bull; <a href="Integer-Arithmetic.html">Integer Arithmetic</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How C performs arithmetic with integer values.
726</td></tr>
727<tr><td align="left" valign="top">&bull; <a href="Integer-Overflow.html">Integer Overflow</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">When an integer value exceeds the range
728 of its type.
729</td></tr>
730<tr><td align="left" valign="top">&bull; <a href="Mixed-Mode.html">Mixed Mode</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Calculating with both integer values
731 and floating-point values.
732</td></tr>
733<tr><td align="left" valign="top">&bull; <a href="Division-and-Remainder.html">Division and Remainder</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How integer division works.
734</td></tr>
735<tr><td align="left" valign="top">&bull; <a href="Numeric-Comparisons.html">Numeric Comparisons</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Comparing numeric values for
736 equality or order.
737</td></tr>
738<tr><td align="left" valign="top">&bull; <a href="Shift-Operations.html">Shift Operations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Shift integer bits left or right.
739</td></tr>
740<tr><td align="left" valign="top">&bull; <a href="Bitwise-Operations.html">Bitwise Operations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Bitwise conjunction, disjunction, negation.
741</td></tr>
742<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
743
744Assignment Expressions
745
746</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Simple-Assignment.html">Simple Assignment</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The basics of storing a value.
747</td></tr>
748<tr><td align="left" valign="top">&bull; <a href="Lvalues.html">Lvalues</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Expressions into which a value can be stored.
749</td></tr>
750<tr><td align="left" valign="top">&bull; <a href="Modifying-Assignment.html">Modifying Assignment</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Shorthand for changing an lvalue&rsquo;s contents.
751</td></tr>
752<tr><td align="left" valign="top">&bull; <a href="Increment_002fDecrement.html">Increment/Decrement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Shorthand for incrementing and decrementing
753 an lvalue&rsquo;s contents.
754</td></tr>
755<tr><td align="left" valign="top">&bull; <a href="Postincrement_002fPostdecrement.html">Postincrement/Postdecrement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Accessing then incrementing or decrementing.
756</td></tr>
757<tr><td align="left" valign="top">&bull; <a href="Assignment-in-Subexpressions.html">Assignment in Subexpressions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to avoid ambiguity.
758</td></tr>
759<tr><td align="left" valign="top">&bull; <a href="Write-Assignments-Separately.html">Write Assignments Separately</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Write assignments as separate statements.
760</td></tr>
761<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
762
763Execution Control Expressions
764
765</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Logical-Operators.html">Logical Operators</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Logical conjunction, disjunction, negation.
766</td></tr>
767<tr><td align="left" valign="top">&bull; <a href="Logicals-and-Comparison.html">Logicals and Comparison</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Logical operators with comparison operators.
768</td></tr>
769<tr><td align="left" valign="top">&bull; <a href="Logicals-and-Assignments.html">Logicals and Assignments</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assignments with logical operators.
770</td></tr>
771<tr><td align="left" valign="top">&bull; <a href="Conditional-Expression.html">Conditional Expression</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">An if/else construct inside expressions.
772</td></tr>
773<tr><td align="left" valign="top">&bull; <a href="Comma-Operator.html">Comma Operator</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Build a sequence of subexpressions.
774</td></tr>
775<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
776
777Order of Execution
778
779</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Reordering-of-Operands.html">Reordering of Operands</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Operations in C are not necessarily computed
780 in the order they are written.
781</td></tr>
782<tr><td align="left" valign="top">&bull; <a href="Associativity-and-Ordering.html">Associativity and Ordering</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Some associative operations are performed
783 in a particular order; others are not.
784</td></tr>
785<tr><td align="left" valign="top">&bull; <a href="Sequence-Points.html">Sequence Points</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Some guarantees about the order of operations.
786</td></tr>
787<tr><td align="left" valign="top">&bull; <a href="Postincrement-and-Ordering.html">Postincrement and Ordering</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Ambiguous excution order with postincrement.
788</td></tr>
789<tr><td align="left" valign="top">&bull; <a href="Ordering-of-Operands.html">Ordering of Operands</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Evaluation order of operands
790 and function arguments.
791</td></tr>
792<tr><td align="left" valign="top">&bull; <a href="Optimization-and-Ordering.html">Optimization and Ordering</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Compiler optimizations can reorder operations
793 only if it has no impact on program results.
794</td></tr>
795<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
796
797Primitive Data Types
798
799</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Integer-Types.html">Integer Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Description of integer types.
800</td></tr>
801<tr><td align="left" valign="top">&bull; <a href="Floating_002dPoint-Data-Types.html">Floating-Point Data Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Description of floating-point types.
802</td></tr>
803<tr><td align="left" valign="top">&bull; <a href="Complex-Data-Types.html">Complex Data Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Description of complex number types.
804</td></tr>
805<tr><td align="left" valign="top">&bull; <a href="The-Void-Type.html">The Void Type</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A type indicating no value at all.
806</td></tr>
807<tr><td align="left" valign="top">&bull; <a href="Other-Data-Types.html">Other Data Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A brief summary of other types.
808</td></tr>
809<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
810
811Constants
812
813</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Integer-Constants.html">Integer Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Literal integer values.
814</td></tr>
815<tr><td align="left" valign="top">&bull; <a href="Integer-Const-Type.html">Integer Const Type</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Types of literal integer values.
816</td></tr>
817<tr><td align="left" valign="top">&bull; <a href="Floating-Constants.html">Floating Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Literal floating-point values.
818</td></tr>
819<tr><td align="left" valign="top">&bull; <a href="Imaginary-Constants.html">Imaginary Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Literal imaginary number values.
820</td></tr>
821<tr><td align="left" valign="top">&bull; <a href="Invalid-Numbers.html">Invalid Numbers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Avoiding preprocessing number misconceptions.
822</td></tr>
823<tr><td align="left" valign="top">&bull; <a href="Character-Constants.html">Character Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Literal character values.
824</td></tr>
825<tr><td align="left" valign="top">&bull; <a href="Unicode-Character-Codes.html">Unicode Character Codes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Unicode characters represented
826 in either UTF-16 or UTF-32.
827</td></tr>
828<tr><td align="left" valign="top">&bull; <a href="Wide-Character-Constants.html">Wide Character Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Literal characters values larger than 8 bits.
829</td></tr>
830<tr><td align="left" valign="top">&bull; <a href="String-Constants.html">String Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Literal string values.
831</td></tr>
832<tr><td align="left" valign="top">&bull; <a href="UTF_002d8-String-Constants.html">UTF-8 String Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Literal UTF-8 string values.
833</td></tr>
834<tr><td align="left" valign="top">&bull; <a href="Wide-String-Constants.html">Wide String Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Literal string values made up of
835 16- or 32-bit characters.
836</td></tr>
837<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
838
839Pointers
840
841</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Address-of-Data.html">Address of Data</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using the &ldquo;address-of&rdquo; operator.
842</td></tr>
843<tr><td align="left" valign="top">&bull; <a href="Pointer-Types.html">Pointer Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">For each type, there is a pointer type.
844</td></tr>
845<tr><td align="left" valign="top">&bull; <a href="Pointer-Declarations.html">Pointer Declarations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Declaring variables with pointer types.
846</td></tr>
847<tr><td align="left" valign="top">&bull; <a href="Pointer-Type-Designators.html">Pointer Type Designators</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Designators for pointer types.
848</td></tr>
849<tr><td align="left" valign="top">&bull; <a href="Pointer-Dereference.html">Pointer Dereference</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Accessing what a pointer points at.
850</td></tr>
851<tr><td align="left" valign="top">&bull; <a href="Null-Pointers.html">Null Pointers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Pointers which do not point to any object.
852</td></tr>
853<tr><td align="left" valign="top">&bull; <a href="Invalid-Dereference.html">Invalid Dereference</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Dereferencing null or invalid pointers.
854</td></tr>
855<tr><td align="left" valign="top">&bull; <a href="Void-Pointers.html">Void Pointers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Totally generic pointers, can cast to any.
856</td></tr>
857<tr><td align="left" valign="top">&bull; <a href="Pointer-Comparison.html">Pointer Comparison</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Comparing memory address values.
858</td></tr>
859<tr><td align="left" valign="top">&bull; <a href="Pointer-Arithmetic.html">Pointer Arithmetic</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Computing memory address values.
860</td></tr>
861<tr><td align="left" valign="top">&bull; <a href="Pointers-and-Arrays.html">Pointers and Arrays</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using pointer syntax instead of array syntax.
862</td></tr>
863<tr><td align="left" valign="top">&bull; <a href="Pointer-Arithmetic-Low-Level.html">Pointer Arithmetic Low Level</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">More about computing memory address values.
864</td></tr>
865<tr><td align="left" valign="top">&bull; <a href="Pointer-Increment_002fDecrement.html">Pointer Increment/Decrement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Incrementing and decrementing pointers.
866</td></tr>
867<tr><td align="left" valign="top">&bull; <a href="Pointer-Arithmetic-Drawbacks.html">Pointer Arithmetic Drawbacks</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A common pointer bug to watch out for.
868</td></tr>
869<tr><td align="left" valign="top">&bull; <a href="Pointer_002dInteger-Conversion.html">Pointer-Integer Conversion</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Converting pointer types to integer types.
870</td></tr>
871<tr><td align="left" valign="top">&bull; <a href="Printing-Pointers.html">Printing Pointers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using <code>printf</code> for a pointer&rsquo;s value.
872</td></tr>
873<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
874
875Structures
876
877</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Referencing-Fields.html">Referencing Fields</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Accessing field values in a structure object.
878</td></tr>
879<tr><td align="left" valign="top">&bull; <a href="Dynamic-Memory-Allocation.html">Dynamic Memory Allocation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Allocating space for objects
880 while the program is running.
881</td></tr>
882<tr><td align="left" valign="top">&bull; <a href="Field-Offset.html">Field Offset</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Memory layout of fields within a structure.
883</td></tr>
884<tr><td align="left" valign="top">&bull; <a href="Structure-Layout.html">Structure Layout</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Planning the memory layout of fields.
885</td></tr>
886<tr><td align="left" valign="top">&bull; <a href="Packed-Structures.html">Packed Structures</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Packing structure fields as close as possible.
887</td></tr>
888<tr><td align="left" valign="top">&bull; <a href="Bit-Fields.html">Bit Fields</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Dividing integer fields
889 into fields with fewer bits.
890</td></tr>
891<tr><td align="left" valign="top">&bull; <a href="Bit-Field-Packing.html">Bit Field Packing</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How bit fields pack together in integers.
892</td></tr>
893<tr><td align="left" valign="top">&bull; <a href="const-Fields.html">const Fields</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Making structure fields immutable.
894</td></tr>
895<tr><td align="left" valign="top">&bull; <a href="Zero-Length.html">Zero Length</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Zero-length array as a variable-length object.
896</td></tr>
897<tr><td align="left" valign="top">&bull; <a href="Flexible-Array-Fields.html">Flexible Array Fields</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Another approach to variable-length objects.
898</td></tr>
899<tr><td align="left" valign="top">&bull; <a href="Overlaying-Structures.html">Overlaying Structures</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Casting one structure type
900 over an object of another structure type.
901</td></tr>
902<tr><td align="left" valign="top">&bull; <a href="Structure-Assignment.html">Structure Assignment</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assigning values to structure objects.
903</td></tr>
904<tr><td align="left" valign="top">&bull; <a href="Unions.html">Unions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Viewing the same object in different types.
905</td></tr>
906<tr><td align="left" valign="top">&bull; <a href="Packing-With-Unions.html">Packing With Unions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using a union type to pack various types into
907 the same memory space.
908</td></tr>
909<tr><td align="left" valign="top">&bull; <a href="Cast-to-Union.html">Cast to Union</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Casting a value one of the union&rsquo;s alternative
910 types to the type of the union itself.
911</td></tr>
912<tr><td align="left" valign="top">&bull; <a href="Structure-Constructors.html">Structure Constructors</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Building new structure objects.
913</td></tr>
914<tr><td align="left" valign="top">&bull; <a href="Unnamed-Types-as-Fields.html">Unnamed Types as Fields</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Fields&rsquo; types do not always need names.
915</td></tr>
916<tr><td align="left" valign="top">&bull; <a href="Incomplete-Types.html">Incomplete Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Types which have not been fully defined.
917</td></tr>
918<tr><td align="left" valign="top">&bull; <a href="Intertwined-Incomplete-Types.html">Intertwined Incomplete Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Defining mutually-recursive structue types.
919</td></tr>
920<tr><td align="left" valign="top">&bull; <a href="Type-Tags.html">Type Tags</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Scope of structure and union type tags.
921</td></tr>
922<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
923
924Arrays
925
926</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Accessing-Array-Elements.html">Accessing Array Elements</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to access individual elements of an array.
927</td></tr>
928<tr><td align="left" valign="top">&bull; <a href="Declaring-an-Array.html">Declaring an Array</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to name and reserve space for a new array.
929</td></tr>
930<tr><td align="left" valign="top">&bull; <a href="Strings.html">Strings</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A string in C is a special case of array.
931</td></tr>
932<tr><td align="left" valign="top">&bull; <a href="Incomplete-Array-Types.html">Incomplete Array Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Naming, but not allocating, a new array.
933</td></tr>
934<tr><td align="left" valign="top">&bull; <a href="Limitations-of-C-Arrays.html">Limitations of C Arrays</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Arrays are not first-class objects.
935</td></tr>
936<tr><td align="left" valign="top">&bull; <a href="Multidimensional-Arrays.html">Multidimensional Arrays</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Arrays of arrays.
937</td></tr>
938<tr><td align="left" valign="top">&bull; <a href="Constructing-Array-Values.html">Constructing Array Values</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assigning values to an entire array at once.
939</td></tr>
940<tr><td align="left" valign="top">&bull; <a href="Arrays-of-Variable-Length.html">Arrays of Variable Length</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Declaring arrays of non-constant size.
941</td></tr>
942<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
943
944Statements
945
946</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Expression-Statement.html">Expression Statement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Evaluate an expression, as a statement,
947 usually done for a side effect.
948</td></tr>
949<tr><td align="left" valign="top">&bull; <a href="if-Statement.html">if Statement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Basic conditional execution.
950</td></tr>
951<tr><td align="left" valign="top">&bull; <a href="if_002delse-Statement.html">if-else Statement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Multiple branches for conditional execution.
952</td></tr>
953<tr><td align="left" valign="top">&bull; <a href="Blocks.html">Blocks</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Grouping multiple statements together.
954</td></tr>
955<tr><td align="left" valign="top">&bull; <a href="return-Statement.html">return Statement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Return a value from a function.
956</td></tr>
957<tr><td align="left" valign="top">&bull; <a href="Loop-Statements.html">Loop Statements</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Repeatedly executing a statement or block.
958</td></tr>
959<tr><td align="left" valign="top">&bull; <a href="switch-Statement.html">switch Statement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Multi-way conditional choices.
960</td></tr>
961<tr><td align="left" valign="top">&bull; <a href="switch-Example.html">switch Example</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A plausible example of using <code>switch</code>.
962</td></tr>
963<tr><td align="left" valign="top">&bull; <a href="Duffs-Device.html">Duffs Device</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A special way to use <code>switch</code>.
964</td></tr>
965<tr><td align="left" valign="top">&bull; <a href="Case-Ranges.html">Case Ranges</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Ranges of values for <code>switch</code> cases.
966</td></tr>
967<tr><td align="left" valign="top">&bull; <a href="Null-Statement.html">Null Statement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A statement that does nothing.
968</td></tr>
969<tr><td align="left" valign="top">&bull; <a href="goto-Statement.html">goto Statement</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Jump to another point in the source code,
970 identified by a label.
971</td></tr>
972<tr><td align="left" valign="top">&bull; <a href="Local-Labels.html">Local Labels</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Labels with limited scope.
973</td></tr>
974<tr><td align="left" valign="top">&bull; <a href="Labels-as-Values.html">Labels as Values</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Getting the address of a label.
975</td></tr>
976<tr><td align="left" valign="top">&bull; <a href="Statement-Exprs.html">Statement Exprs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A series of statements used as an expression.
977</td></tr>
978<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
979
980Variables
981
982</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Variable-Declarations.html">Variable Declarations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Name a variable and and reserve space for it.
983</td></tr>
984<tr><td align="left" valign="top">&bull; <a href="Initializers.html">Initializers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assigning inital values to variables.
985</td></tr>
986<tr><td align="left" valign="top">&bull; <a href="Designated-Inits.html">Designated Inits</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Assigning initial values to array elements
987 at particular array indices.
988</td></tr>
989<tr><td align="left" valign="top">&bull; <a href="Auto-Type.html">Auto Type</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Obtaining the type of a variable.
990</td></tr>
991<tr><td align="left" valign="top">&bull; <a href="Local-Variables.html">Local Variables</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Variables declared in function definitions.
992</td></tr>
993<tr><td align="left" valign="top">&bull; <a href="File_002dScope-Variables.html">File-Scope Variables</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Variables declared outside of
994 function definitions.
995</td></tr>
996<tr><td align="left" valign="top">&bull; <a href="Static-Local-Variables.html">Static Local Variables</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Variables declared within functions,
997 but with permanent storage allocation.
998</td></tr>
999<tr><td align="left" valign="top">&bull; <a href="Extern-Declarations.html">Extern Declarations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Declaring a variable
1000 which is allocated somewhere else.
1001</td></tr>
1002<tr><td align="left" valign="top">&bull; <a href="Allocating-File_002dScope.html">Allocating File-Scope</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">When is space allocated
1003 for file-scope variables?
1004</td></tr>
1005<tr><td align="left" valign="top">&bull; <a href="auto-and-register.html">auto and register</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Historically used storage directions.
1006</td></tr>
1007<tr><td align="left" valign="top">&bull; <a href="Omitting-Types.html">Omitting Types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The bad practice of declaring variables
1008 with implicit type.
1009</td></tr>
1010<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
1011
1012Type Qualifiers
1013
1014</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="const.html">const</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Variables whose values don&rsquo;t change.
1015</td></tr>
1016<tr><td align="left" valign="top">&bull; <a href="volatile.html">volatile</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Variables whose values may be accessed
1017 or changed outside of the control of
1018 this program.
1019</td></tr>
1020<tr><td align="left" valign="top">&bull; <a href="restrict-Pointers.html">restrict Pointers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Restricted pointers for code optimization.
1021</td></tr>
1022<tr><td align="left" valign="top">&bull; <a href="restrict-Pointer-Example.html">restrict Pointer Example</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Example of how that works.
1023</td></tr>
1024<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
1025
1026Functions
1027
1028</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Function-Definitions.html">Function Definitions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Writing the body of a function.
1029</td></tr>
1030<tr><td align="left" valign="top">&bull; <a href="Function-Declarations.html">Function Declarations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Declaring the interface of a function.
1031</td></tr>
1032<tr><td align="left" valign="top">&bull; <a href="Function-Calls.html">Function Calls</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using functions.
1033</td></tr>
1034<tr><td align="left" valign="top">&bull; <a href="Function-Call-Semantics.html">Function Call Semantics</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Call-by-value argument passing.
1035</td></tr>
1036<tr><td align="left" valign="top">&bull; <a href="Function-Pointers.html">Function Pointers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using references to functions.
1037</td></tr>
1038<tr><td align="left" valign="top">&bull; <a href="The-main-Function.html">The main Function</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Where execution of a GNU C program begins.
1039</td></tr>
1040<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
1041
1042Type Conversions
1043
1044</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Explicit-Type-Conversion.html">Explicit Type Conversion</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Casting a value from one type to another.
1045</td></tr>
1046<tr><td align="left" valign="top">&bull; <a href="Assignment-Type-Conversions.html">Assignment Type Conversions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Automatic conversion by assignment operation.
1047</td></tr>
1048<tr><td align="left" valign="top">&bull; <a href="Argument-Promotions.html">Argument Promotions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Automatic conversion of function parameters.
1049</td></tr>
1050<tr><td align="left" valign="top">&bull; <a href="Operand-Promotions.html">Operand Promotions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Automatic conversion of arithmetic operands.
1051</td></tr>
1052<tr><td align="left" valign="top">&bull; <a href="Common-Type.html">Common Type</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">When operand types differ, which one is used?
1053</td></tr>
1054<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
1055
1056Scope
1057
1058</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Scope.html">Scope</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Different categories of identifier scope.
1059</td></tr>
1060<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
1061
1062Preprocessing
1063
1064</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Preproc-Overview.html">Preproc Overview</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Introduction to the C preprocessor.
1065</td></tr>
1066<tr><td align="left" valign="top">&bull; <a href="Directives.html">Directives</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The form of preprocessor directives.
1067</td></tr>
1068<tr><td align="left" valign="top">&bull; <a href="Preprocessing-Tokens.html">Preprocessing Tokens</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The lexical elements of preprocessing.
1069</td></tr>
1070<tr><td align="left" valign="top">&bull; <a href="Header-Files.html">Header Files</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Including one source file in another.
1071</td></tr>
1072<tr><td align="left" valign="top">&bull; <a href="Macros.html">Macros</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Macro expansion by the preprocessor.
1073</td></tr>
1074<tr><td align="left" valign="top">&bull; <a href="Conditionals.html">Conditionals</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Controling whether to compile some lines
1075 or ignore them.
1076</td></tr>
1077<tr><td align="left" valign="top">&bull; <a href="Diagnostics.html">Diagnostics</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Reporting warnings and errors.
1078</td></tr>
1079<tr><td align="left" valign="top">&bull; <a href="Line-Control.html">Line Control</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Reporting source line numbers.
1080</td></tr>
1081<tr><td align="left" valign="top">&bull; <a href="Null-Directive.html">Null Directive</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A preprocessing no-op.
1082</td></tr>
1083<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
1084
1085Integers in Depth
1086
1087</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Integer-Representations.html">Integer Representations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How integer values appear in memory.
1088</td></tr>
1089<tr><td align="left" valign="top">&bull; <a href="Maximum-and-Minimum-Values.html">Maximum and Minimum Values</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Value ranges of integer types.
1090</td></tr>
1091<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
1092
1093Floating Point in Depth
1094
1095</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Floating-Representations.html">Floating Representations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How floating-point values appear in memory.
1096</td></tr>
1097<tr><td align="left" valign="top">&bull; <a href="Floating-Type-Specs.html">Floating Type Specs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Precise details of memory representations.
1098</td></tr>
1099<tr><td align="left" valign="top">&bull; <a href="Special-Float-Values.html">Special Float Values</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Infinity, Not a Number, and Subnormal Numbers.
1100</td></tr>
1101<tr><td align="left" valign="top">&bull; <a href="Invalid-Optimizations.html">Invalid Optimizations</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Don&rsquo;t mess up non-numbers and signed zeros.
1102</td></tr>
1103<tr><td align="left" valign="top">&bull; <a href="Exception-Flags.html">Exception Flags</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Handling certain conditions in floating point.
1104</td></tr>
1105<tr><td align="left" valign="top">&bull; <a href="Exact-Floating_002dPoint.html">Exact Floating-Point</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Not all floating calculations lose precision.
1106</td></tr>
1107<tr><td align="left" valign="top">&bull; <a href="Rounding.html">Rounding</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">When a floating result can&rsquo;t be represented
1108 exactly in the floating-point type in use.
1109</td></tr>
1110<tr><td align="left" valign="top">&bull; <a href="Rounding-Issues.html">Rounding Issues</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Avoid magnifying rounding errors.
1111</td></tr>
1112<tr><td align="left" valign="top">&bull; <a href="Significance-Loss.html">Significance Loss</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Subtracting numbers that are almost equal.
1113</td></tr>
1114<tr><td align="left" valign="top">&bull; <a href="Fused-Multiply_002dAdd.html">Fused Multiply-Add</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Taking advantage of a special floating-point
1115 instruction for faster execution.
1116</td></tr>
1117<tr><td align="left" valign="top">&bull; <a href="Error-Recovery.html">Error Recovery</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Determining rounding errors.
1118</td></tr>
1119<tr><td align="left" valign="top">&bull; <a href="Exact-Floating-Constants.html">Exact Floating Constants</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Precisely specified floating-point numbers.
1120</td></tr>
1121<tr><td align="left" valign="top">&bull; <a href="Handling-Infinity.html">Handling Infinity</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">When floating calculation is out of range.
1122</td></tr>
1123<tr><td align="left" valign="top">&bull; <a href="Handling-NaN.html">Handling NaN</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">What floating calculation is undefined.
1124</td></tr>
1125<tr><td align="left" valign="top">&bull; <a href="Signed-Zeros.html">Signed Zeros</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Positive zero vs. negative zero.
1126</td></tr>
1127<tr><td align="left" valign="top">&bull; <a href="Scaling-by-the-Base.html">Scaling by the Base</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A useful exact floating-point operation.
1128</td></tr>
1129<tr><td align="left" valign="top">&bull; <a href="Rounding-Control.html">Rounding Control</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Specifying some rounding behaviors.
1130</td></tr>
1131<tr><td align="left" valign="top">&bull; <a href="Machine-Epsilon.html">Machine Epsilon</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The smallest number you can add to 1.0
1132 and get a sum which is larger than 1.0.
1133</td></tr>
1134<tr><td align="left" valign="top">&bull; <a href="Complex-Arithmetic.html">Complex Arithmetic</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Details of arithmetic with complex numbers.
1135</td></tr>
1136<tr><td align="left" valign="top">&bull; <a href="Round_002dTrip-Base-Conversion.html">Round-Trip Base Conversion</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">What happens between base-2 and base-10.
1137</td></tr>
1138<tr><td align="left" valign="top">&bull; <a href="Further-Reading.html">Further Reading</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">References for floating-point numbers.
1139</td></tr>
1140<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
1141
1142Directing Compilation
1143
1144</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="Pragmas.html">Pragmas</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Controling compilation of some constructs.
1145</td></tr>
1146<tr><td align="left" valign="top">&bull; <a href="Static-Assertions.html">Static Assertions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Compile-time tests for conditions.
1147</td></tr>
1148<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
1149
1150</pre></th></tr></table>
1151
1152<hr>
1153<div class="header">
1154<p>
1155Next: <a href="The-First-Example.html" accesskey="n" rel="next">The First Example</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Index.html" title="Index" rel="index">Index</a>]</p>
1156</div>
1157
1158
1159
1160</body>
1161</html>
Note: See TracBrowser for help on using the repository browser.