This is c.info, produced by makeinfo version 6.8 from c.texi. Copyright © 2022 Richard Stallman and Free Software Foundation, Inc. (The work of Trevis Rothwell and Nelson Beebe has been assigned or licensed to the FSF.) Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with the Invariant Sections being “GNU General Public License,” with the Front-Cover Texts being “A GNU Manual,” and with the Back-Cover Texts as in (a) below. A copy of the license is included in the section entitled “GNU Free Documentation License.” (a) The FSF’s Back-Cover Text is: “You have the freedom to copy and modify this GNU manual.” INFO-DIR-SECTION Programming START-INFO-DIR-ENTRY * C: (c). GNU C Language Intro and Reference Manual END-INFO-DIR-ENTRY  Indirect: c.info-1: 966 c.info-2: 301107 c.info-3: 606017  Tag Table: (Indirect) Node: Top966 Node: The First Example23431 Node: Recursive Fibonacci24162 Node: Function Header27188 Node: Function Body27723 Node: Stack31269 Node: Iterative Fibonacci33328 Node: Complete Program39024 Node: Complete Example39813 Node: Complete Explanation40553 Node: Complete Line-by-Line43978 Node: Compile Example45535 Node: Storage47193 Node: Beyond Integers48225 Node: Float Example48772 Node: Array Example50564 Node: Array Example Call52825 Node: Array Example Variations55249 Node: Lexical Syntax57400 Node: English58379 Node: Characters60189 Ref: Characters-Footnote-161340 Node: Whitespace61462 Node: Comments63071 Node: Identifiers65791 Node: Operators/Punctuation67271 Node: Line Continuation69956 Node: Arithmetic71345 Node: Basic Arithmetic73657 Node: Integer Arithmetic74906 Node: Integer Overflow77400 Node: Unsigned Overflow78339 Node: Signed Overflow79548 Node: Mixed Mode81697 Node: Division and Remainder83057 Node: Numeric Comparisons85521 Node: Shift Operations86761 Node: Bits Shifted In87736 Node: Shift Caveats89098 Node: Shift Hacks90492 Node: Bitwise Operations91411 Node: Assignment Expressions94532 Node: Simple Assignment96917 Node: Lvalues98357 Node: Modifying Assignment99941 Node: Increment/Decrement101731 Node: Postincrement/Postdecrement103119 Node: Assignment in Subexpressions105450 Node: Write Assignments Separately106898 Node: Execution Control Expressions108122 Node: Logical Operators108817 Node: Logicals and Comparison110977 Node: Logicals and Assignments112230 Node: Conditional Expression113777 Node: Conditional Rules114281 Node: Conditional Branches115566 Node: Comma Operator117544 Node: Uses of Comma118225 Node: Clean Comma119223 Node: Avoid Comma120457 Node: Binary Operator Grammar121356 Ref: Binary Operator Grammar-Footnote-1124582 Node: Order of Execution124947 Node: Reordering of Operands125985 Node: Associativity and Ordering126856 Node: Sequence Points128448 Node: Postincrement and Ordering130274 Node: Ordering of Operands131702 Node: Optimization and Ordering133397 Node: Primitive Types134432 Node: Integer Types135262 Node: Basic Integers136195 Node: Signed and Unsigned Types137668 Ref: Signed and Unsigned Types-Footnote-1138826 Node: Narrow Integers139142 Node: Integer Conversion140573 Node: Boolean Type141957 Node: Integer Variations142464 Node: Floating-Point Data Types144272 Node: Complex Data Types146700 Ref: Complex Data Types-Footnote-1148743 Node: The Void Type148929 Node: Other Data Types149750 Node: Type Designators150537 Node: Constants152591 Node: Integer Constants153796 Node: Integer Const Type155521 Node: Floating Constants156947 Node: Imaginary Constants159111 Node: Invalid Numbers160708 Node: Character Constants161438 Node: String Constants164027 Node: UTF-8 String Constants167815 Node: Unicode Character Codes168683 Node: Wide Character Constants170262 Node: Wide String Constants172171 Node: Type Size174682 Node: Pointers177207 Node: Address of Data179251 Node: Pointer Types180229 Node: Pointer Declarations180792 Node: Pointer Type Designators182195 Node: Pointer Dereference183253 Node: Null Pointers184398 Node: Invalid Dereference185679 Node: Void Pointers186938 Node: Pointer Comparison189305 Node: Pointer Arithmetic190866 Node: Pointers and Arrays194597 Node: Low-Level Pointer Arithmetic196398 Node: Pointer Increment/Decrement198317 Node: Pointer Arithmetic Drawbacks201969 Node: Pointer-Integer Conversion203492 Node: Printing Pointers204744 Node: Structures205241 Node: Referencing Fields210228 Node: Arrays as Fields211642 Node: Dynamic Memory Allocation212528 Node: Field Offset214865 Node: Structure Layout215405 Node: Packed Structures217815 Node: Bit Fields218898 Node: Bit Field Packing220530 Node: const Fields222570 Node: Zero Length223864 Node: Flexible Array Fields224673 Node: Overlaying Structures226245 Node: Structure Assignment227573 Node: Unions229356 Node: Packing With Unions231810 Node: Cast to Union233573 Node: Structure Constructors234736 Node: Unnamed Types as Fields236271 Node: Incomplete Types237261 Node: Intertwined Incomplete Types238724 Node: Type Tags239641 Node: Arrays242311 Node: Accessing Array Elements243831 Node: Declaring an Array245512 Node: Strings247267 Node: Array Type Designators249837 Node: Incomplete Array Types250405 Node: Limitations of C Arrays251968 Node: Multidimensional Arrays254304 Node: Constructing Array Values257638 Node: Arrays of Variable Length258960 Node: Enumeration Types261597 Node: Defining Typedef Names264771 Node: Statements267486 Node: Expression Statement269511 Node: if Statement270722 Node: if-else Statement271552 Node: Blocks272467 Node: return Statement274965 Node: Loop Statements275796 Node: while Statement276897 Node: do-while Statement277905 Node: break Statement278610 Node: for Statement280143 Node: Example of for281195 Node: Omitted for-Expressions282342 Node: for-Index Declarations284161 Node: continue Statement285175 Node: switch Statement286683 Node: switch Example289267 Node: Duffs Device290782 Node: Case Ranges292018 Node: Null Statement292689 Node: goto Statement293266 Node: Local Labels297021 Node: Labels as Values301107 Ref: Labels as Values-Footnote-1301993 Node: Label Value Uses302189 Node: Label Value Caveats303470 Node: Statement Exprs304927 Node: Variables306986 Node: Variable Declarations309192 Node: Declaring Arrays and Pointers310758 Node: Combining Variable Declarations311934 Node: Initializers312885 Node: Designated Inits316041 Node: Auto Type318744 Node: Local Variables319962 Ref: Local Variables-Footnote-1321732 Node: File-Scope Variables321849 Node: Static Local Variables323205 Node: Extern Declarations324326 Node: Allocating File-Scope326347 Node: auto and register328072 Node: Omitting Types328901 Node: Type Qualifiers329364 Node: const330468 Node: volatile332740 Node: restrict Pointers334903 Node: restrict Pointer Example336560 Node: Functions338593 Node: Function Definitions339572 Node: Function Parameter Variables340588 Node: Forward Function Declarations343147 Node: Static Functions344082 Node: Arrays as Parameters345356 Node: Array Parm Pointer345835 Node: Passing Array Args347045 Node: Array Parm Qualifiers349332 Node: Structs as Parameters350843 Node: Function Declarations352328 Node: Function Calls356092 Node: Function Call Semantics357441 Node: Function Pointers359065 Node: Declaring Function Pointers360056 Node: Assigning Function Pointers362199 Node: Calling Function Pointers363232 Node: The main Function364155 Node: Values from main365796 Node: Command-line Parameters367017 Node: Environment Variables368391 Node: Advanced Definitions369884 Node: Variable-Length Array Parameters370566 Node: Variable Number of Arguments372747 Node: Nested Functions376852 Node: Inline Function Definitions381507 Node: Obsolete Definitions385572 Node: Old GNU Inlining386045 Node: Old-Style Function Definitions387019 Node: Compatible Types388983 Ref: Compatible Types-Footnote-1391619 Node: Type Conversions391654 Node: Explicit Type Conversion392324 Node: Assignment Type Conversions393928 Node: Argument Promotions395717 Ref: Argument Promotions-Footnote-1396765 Node: Operand Promotions396989 Node: Common Type397589 Node: Scope398823 Node: Preprocessing401896 Node: Preproc Overview402345 Node: Directives403956 Node: Preprocessing Tokens405496 Node: Header Files409739 Node: include Syntax411922 Node: include Operation413815 Node: Search Path415701 Node: Once-Only Headers418319 Node: Computed Includes420061 Node: Macros423253 Node: Object-like Macros424542 Node: Function-like Macros428510 Node: Macro Arguments430887 Node: Stringification435195 Node: Concatenation438515 Node: Variadic Macros442028 Ref: Variadic Macros-Footnote-1446025 Ref: Variadic Macros-Footnote-2446050 Node: Predefined Macros446075 Node: Undefining and Redefining Macros453231 Node: Directives Within Macro Arguments455132 Node: Macro Pitfalls456091 Node: Misnesting456627 Node: Operator Precedence Problems457749 Node: Swallowing the Semicolon459645 Node: Duplication of Side Effects461725 Node: Macros and Auto Type463843 Node: Self-Referential Macros465113 Node: Argument Prescan467575 Node: Conditionals471398 Node: Conditional Uses473127 Node: Conditional Syntax474535 Node: ifdef474903 Node: if478265 Node: defined480779 Node: else482158 Node: elif482786 Node: Deleted Code484229 Node: Diagnostics485537 Node: Line Control486749 Node: Null Directive489032 Node: Integers in Depth489319 Node: Integer Representations489779 Ref: Integer Representations-Footnote-1494016 Node: Maximum and Minimum Values494179 Node: Floating Point in Depth495867 Node: Floating Representations496506 Node: Floating Type Specs498302 Node: Special Float Values499709 Ref: subnormal numbers501877 Node: Invalid Optimizations503802 Node: Exception Flags505303 Ref: fetestexcept506132 Node: Exact Floating-Point506649 Node: Rounding507714 Node: Rounding Issues509866 Node: Significance Loss511288 Node: Fused Multiply-Add514389 Node: Error Recovery516312 Node: Exact Floating Constants519246 Node: Handling Infinity521325 Node: Handling NaN523177 Node: Signed Zeros526440 Node: Scaling by the Base527160 Node: Rounding Control528504 Node: Machine Epsilon530199 Node: Complex Arithmetic535325 Node: Round-Trip Base Conversion538984 Node: Further Reading541123 Node: Compilation548852 Node: Directing Compilation551829 Node: Pragmas552298 Node: Pragma Basics552676 Node: Severity Pragmas556793 Node: Optimization Pragmas559425 Node: Static Assertions561782 Node: Type Alignment563630 Node: Aliasing566801 Node: Aliasing Alignment568375 Node: Aliasing Length569390 Node: Aliasing Type Rules570396 Node: Digraphs574304 Node: Attributes574950 Node: Signals577987 Node: GNU Free Documentation License579704 Node: Symbol Index606017 Node: Concept Index613933  End Tag Table  Local Variables: coding: utf-8 End: