Information technology - Programming languages - C

1 This document specifies the form and establishes the interpretation of programs written in the C programming language.1) It specifies - the representation of C programs; - the syntax and constraints of the C language; - the semantic rules for interpreting C programs; - the representation of input data to be processed by C programs; - the representation of output data produced by C programs; - the restrictions and limits imposed by a conforming implementation of C. 2 This document does not specify - the mechanism by which C programs are transformed for use by a data-processing system; - the mechanism by which C programs are invoked for use by a data-processing system; - the mechanism by which input data are transformed for use by a C program; - the mechanism by which output data are transformed after being produced by a C program; - the size or complexity of a program and its data that will exceed the capacity of any specific data-processing system or the capacity of a particular processor; - all minimal requirements of a data-processing system that is capable of supporting a conforming implementation.

Technologies de l'information — Langages de programmation — C

General Information

Status
Published
Publication Date
04-Jul-2018
Current Stage
9599 - Withdrawal of International Standard
Start Date
31-Oct-2024
Completion Date
30-Oct-2025
Ref Project

Relations

Overview

ISO/IEC 9899:2018 is the international standard that defines the C programming language (fourth edition, 2018). It specifies the formal form, syntax, semantic rules and environment for writing and interpreting C programs, and it defines the standard C library (standard headers and their behavior). The document also lists what it intentionally does not cover, such as the mechanisms for transforming or invoking programs on a specific data-processing system and limits tied to particular hardware.

Key Topics

The standard provides authoritative, implementable specifications including:

  • Language form and semantics: lexical elements, declarations, expressions, statements, type system, storage duration and linkage rules.
  • Translation and execution environment: conceptual models for translation units, execution environments, character sets, signals and environmental limits.
  • Preprocessing and macros: conditional inclusion, file inclusion, macro replacement, predefined macros and pragma behavior.
  • Standard library: definitions for headers such as stdio.h, stdlib.h, stdint.h, string/memory, math/complex, atomics, threads-related primitives, and utility functions; diagnostics and error handling.
  • Conformance and limits: rules a conforming implementation must follow and the restrictions/limits it may impose.
  • Numeric and floating-point behavior: floating environment, rounding and exception handling, format conversion and limits.
  • Advanced features: atomics, alignment, variable arguments, and complex/wide character handling.

Practical Applications

ISO/IEC 9899:2018 is the reference for:

  • Compiler and toolchain developers building C compilers, preprocessors, linkers and runtime libraries to ensure C compiler conformance.
  • Embedded systems engineers who must match language behavior to constrained hardware and environmental limits.
  • Software developers and library authors aiming for portable, standards-compliant C code across platforms.
  • Static analysis, verification and security teams using formal language rules to detect undefined behavior, portability issues and security defects.
  • Educators and documentation authors teaching the C language with a current, authoritative specification.

Adopting the standard improves portability, interoperability and correctness for C projects, and is essential when writing low-level or safety-critical code that depends on precise language semantics.

Related standards

  • POSIX (operating-system interfaces commonly used with C)
  • ISO C++ standard (for interoperability and differences between C and C++)
  • Other ISO/IEC standards addressing tooling and language-specific libraries

Keywords: ISO/IEC 9899:2018, C programming language standard, C standard library, C compiler conformance, programming languages - C.

Standard
ISO/IEC 9899:2018 - Information technology — Programming languages — C Released:7/5/2018
English language
520 pages
sale 15% off
Preview
sale 15% off
Preview

Standards Content (Sample)


INTERNATIONAL ISO/IEC
STANDARD 9899
Fourth edition
2018-07
Information technology —
Programming languages — C
Technologies de l'information — Langages de programmation — C
Reference number
©
ISO/IEC 2018
© ISO/IEC 2018
All rights reserved. Unless otherwise specified, or required in the context of its implementation, no part of this publication may
be reproduced or utilized otherwise in any form or by any means, electronic or mechanical, including photocopying, or posting
on the internet or an intranet, without prior written permission. Permission can be requested from either ISO at the address
below or ISO’s member body in the country of the requester.
ISO copyright office
CP 401 • Ch. de Blandonnet 8
CH-1214 Vernier, Geneva
Phone: +41 22 749 01 11
Fax: +41 22 749 09 47
Email: copyright@iso.org
Website: www.iso.org
Published in Switzerland
ii © ISO/IEC 2018 – All rights reserved

© ISO/IEC 2018– All rights reserved ISO/IEC 9899:2018 (E)
Contents
Foreword xi
Introduction xii
1 Scope
2 Normative references 2
3 Terms, definitions and symbols 3
4 Conformance
5 Environment 9
5.1 Conceptual models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.1.1 Translation environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.1.2 Execution environments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5.2 Environmental considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.2.1 Character sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.2.2 Character display semantics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5.2.3 Signals and interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5.2.4 Environmental limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6 Language 28
6.1 Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
6.2 Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
6.2.1 Scopes of identifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
6.2.2 Linkages of identifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
6.2.3 Name spaces of identifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
6.2.4 Storage durations of objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
6.2.5 Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
6.2.6 Representations of types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6.2.7 Compatible type and composite type . . . . . . . . . . . . . . . . . . . . . . . 35
6.2.8 Alignment of objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
6.3 Conversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.3.1 Arithmetic operands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.3.2 Other operands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6.4 Lexical elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
6.4.1 Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
6.4.2 Identifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Contents iii
6.4.3 Universal character names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
6.4.4 Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
6.4.5 String literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
6.4.6 Punctuators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.4.7 Header names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
6.4.8 Preprocessing numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
6.4.9 Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6.5 Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
6.5.1 Primary expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
6.5.2 Postfix operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
6.5.3 Unary operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.5.4 Cast operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.5.5 Multiplicative operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
6.5.6 Additive operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
6.5.7 Bitwise shift operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
6.5.8 Relational operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
6.5.9 Equality operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.5.10 Bitwise AND operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
6.5.11 Bitwise exclusive OR operator . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
6.5.12 Bitwise inclusive OR operator . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
6.5.13 Logical AND operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
6.5.14 Logical OR operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
6.5.15 Conditional operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
6.5.16 Assignment operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
6.5.17 Comma operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
6.6 Constant expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
6.7 Declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
6.7.1 Storage-class specifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.7.2 Type specifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.7.3 Type qualifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.7.4 Function specifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
6.7.5 Alignment specifier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
6.7.6 Declarators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
6.7.7 Type names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
6.7.8 Type definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
6.7.9 Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
6.7.10 Static assertions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
6.8 Statements and blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
6.8.1 Labeled statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
6.8.2 Compound statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
iv Contents
© ISO/IEC 2018– All rights reserved ISO/IEC 9899:2018 (E)
6.8.3 Expression and null statements . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
6.8.4 Selection statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
6.8.5 Iteration statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
6.8.6 Jump statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
6.9 External definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
6.9.1 Function definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
6.9.2 External object definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
6.10 Preprocessing directives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
6.10.1 Conditional inclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
6.10.2 Source file inclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
6.10.3 Macro replacement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
6.10.4 Line control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
6.10.5 Error directive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
6.10.6 Pragma directive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
6.10.7 Null directive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
6.10.8 Predefined macro names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
6.10.9 Pragma operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
6.11 Future language directions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
6.11.1 Floating types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
6.11.2 Linkages of identifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
6.11.3 External names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
6.11.4 Character escape sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
6.11.5 Storage-class specifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
6.11.6 Function declarators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
6.11.7 Function definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
6.11.8 Pragma directives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
6.11.9 Predefined macro names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
7 Library 131
7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
7.1.1 Definitions of terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
7.1.2 Standard headers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
7.1.3 Reserved identifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.1.4 Use of library functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
7.2 Diagnostics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
7.2.1 Program diagnostics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
7.3 Complex arithmetic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
7.3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
7.3.2 Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
7.3.3 Branch cuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Contents v
_ _
7.3.4 TheCX LIMITED RANGE pragma . . . . . . . . . . . . . . . . . . . . . . . . . . 137
7.3.5 Trigonometric functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
7.3.6 Hyperbolic functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
7.3.7 Exponential and logarithmic functions . . . . . . . . . . . . . . . . . . . . . . 140
7.3.8 Power and absolute-value functions . . . . . . . . . . . . . . . . . . . . . . . . 141
7.3.9 Manipulation functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
7.4 Character handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
7.4.1 Character classification functions . . . . . . . . . . . . . . . . . . . . . . . . . . 145
7.4.2 Character case mapping functions . . . . . . . . . . . . . . . . . . . . . . . . . 147
7.5 Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
7.6 Floating-point environment . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
_
7.6.1 TheFENV ACCESS pragma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
7.6.2 Floating-point exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
7.6.3 Rounding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
7.6.4 Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
7.7 Characteristics of floating types . . . . . . . . . . . . . . . . . . . . . . . . 157
7.8 Format conversion of integer types . . . . . . . . . . . . . . . . . . . . 158
7.8.1 Macros for format specifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
7.8.2 Functions for greatest-width integer types . . . . . . . . . . . . . . . . . . . . 159
7.9 Alternative spellings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
7.10 Sizes of integer types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
7.11 Localization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
7.11.1 Locale control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
7.11.2 Numeric formatting convention inquiry . . . . . . . . . . . . . . . . . . . . . . 164
7.12 Mathematics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
7.12.1 Treatment of error conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
_
7.12.2 TheFP CONTRACT pragma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
7.12.3 Classification macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
7.12.4 Trigonometric functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
7.12.5 Hyperbolic functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
7.12.6 Exponential and logarithmic functions . . . . . . . . . . . . . . . . . . . . . . 177
7.12.7 Power and absolute-value functions . . . . . . . . . . . . . . . . . . . . . . . . 180
7.12.8 Error and gamma functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
7.12.9 Nearest integer functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
7.12.10 Remainder functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
7.12.11 Manipulation functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
7.12.12 Maximum, minimum, and positive difference functions . . . . . . . . . . . . 187
7.12.13 Floating multiply-add . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
7.12.14 Comparison macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
7.13 Nonlocal jumps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
vi Contents
© ISO/IEC 2018– All rights reserved ISO/IEC 9899:2018 (E)
7.13.1 Save calling environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
7.13.2 Restore calling environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
7.14 Signal handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
7.14.1 Specify signal handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
7.14.2 Send signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
7.15 Alignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
7.16 Variable arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
7.16.1 Variable argument list access macros . . . . . . . . . . . . . . . . . . . . . . . . 197
7.17 Atomics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
7.17.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
7.17.2 Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
7.17.3 Order and consistency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
7.17.4 Fences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
7.17.5 Lock-free property . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
7.17.6 Atomic integer types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
7.17.7 Operations on atomic types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
7.17.8 Atomic flag type and operations . . . . . . . . . . . . . . . . . . . . . . . . . . 208
7.18 Boolean type and values . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
7.19 Common definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
7.20 Integer types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
7.20.1 Integer types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
7.20.2 Limits of specified-width integer types . . . . . . . . . . . . . . . . . . . . . . 213
7.20.3 Limits of other integer types . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
7.20.4 Macros for integer constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
7.21 Input/output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
7.21.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
7.21.2 Streams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
7.21.3 Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
7.21.4 Operations on files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
7.21.5 File access functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
7.21.6 Formatted input/output functions . . . . . . . . . . . . . . . . . . . . . . . . . 225
7.21.7 Character input/output functions . . . . . . . . . . . . . . . . . . . . . . . . . 241
7.21.8 Direct input/output functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
7.21.9 File positioning functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
7.21.10 Error-handling functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
7.22 General utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
7.22.1 Numeric conversion functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
7.22.2 Pseudo-random sequence generation functions . . . . . . . . . . . . . . . . . 253
7.22.3 Memory management functions . . . . . . . . . . . . . . . . . . . . . . . . . . 254
7.22.4 Communication with the environment . . . . . . . . . . . . . . . . . . . . . . 256
Contents vii
7.22.5 Searching and sorting utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
7.22.6 Integer arithmetic functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
7.22.7 Multibyte/wide character conversion functions . . . . . . . . . . . . . . . . . 261
7.22.8 Multibyte/wide string conversion functions . . . . . . . . . . . . . . . . . . . 262
_
7.23 Noreturn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
7.24 String handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
7.24.1 String function conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
7.24.2 Copying functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
7.24.3 Concatenation functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
7.24.4 Comparison functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
7.24.5 Search functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
7.24.6 Miscellaneous functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
7.25 Type-generic math . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
7.26 Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
7.26.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
7.26.2 Initialization functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
7.26.3 Condition variable functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
7.26.4 Mutex functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
7.26.5 Thread functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
7.26.6 Thread-specific storage functions . . . . . . . . . . . . . . . . . . . . . . . . . . 282
7.27 Date and time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
7.27.1 Components of time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
7.27.2 Time manipulation functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
7.27.3 Time conversion functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
7.28 Unicode utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
7.28.1 Restartable multibyte/wide character conversion functions . . . . . . . . . . 293
7.29 Extended multibyte and wide character utilities . . . . . . . . . . . . . . . 296
7.29.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
7.29.2 Formatted wide character input/output functions . . . . . . . . . . . . . . . . 296
7.29.3 Wide character input/output functions . . . . . . . . . . . . . . . . . . . . . . 308
7.29.4 General wide string utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
7.29.4.1 Wide string numeric conversion functions . . . . . . . . . . . . . . . 312
7.29.4.2 Wide string copying functions . . . . . . . . . . . . . . . . . . . . . . 315
7.29.4.3 Wide string concatenation functions . . . . . . . . . . . . . . . . . . 316
7.29.4.4 Wide string comparison functions . . . . . . . . . . . . . . . . . . . . 316
7.29.4.5 Wide string search functions . . . . . . . . . . . . . . . . . . . . . . . 318
7.29.4.6 Miscellaneous functions . . . . . . . . . . . . . . . . . . . . . . . . . 321
7.29.5 Wide character time conversion functions . . . . . . . . . . . . . . . . . . . . . 321
7.29.6 Extended multibyte/wide character conversion utilities . . . . . . . . . . . . 322
7.29.6.1 Single-byte/wide character conversion functions . . . . . . . . . . . 322
viii Contents
© ISO/IEC 2018– All rights reserved ISO/IEC 9899:2018 (E)
7.29.6.2 Conversion state functions . . . . . . . . . . . . . . . . . . . . . . . . 323
7.29.6.3 Restartable multibyte/wide character conversion functions . . . . . 323
7.29.6.4 Restartable multibyte/wide string conversion functions . . . . . . . 325
7.30 Wide character classification and mapping utilities . . . . . . . . . . . . 327
7.30.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
7.30.2 Wide character classification utilities . . . . . . . . . . . . . . . . . . . . . . . . 327
7.30.2.1 Wide character classification functions . . . . . . . . . . . . . . . . . 327
7.30.2.2 Extensible wide character classification functions . . . . . . . . . . . 330
7.30.3 Wide character case mapping utilities . . . . . . . . . . . . . . . . . . . . . . . 331
7.30.3.1 Wide character case mapping functions . . . . . . . . . . . . . . . . . 331
7.30.3.2 Extensible wide character case mapping functions . . . . . . . . . . 331
7.31 Future library directions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
7.31.1 Complex arithmetic . . . . . . . . . . . . . . . . . . . . . . . . . 333
7.31.2 Character handling . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
7.31.3 Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
7.31.4 Floating-point environment . . . . . . . . . . . . . . . . . . . . . . . 333
7.31.5 Format conversion of integer types . . . . . . . . . . . . . . . . 333
7.31.6 Localization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
7.31.7 Signal handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
7.31.8 Atomics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
7.31.9 Boolean type and values . . . . . . . . . . . . . . . . . . . . . . 333
7.31.10 Integer types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
7.31.11 Input/output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
7.31.12 General utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
7.31.13 String handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
7.31.14 Date and time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
7.31.15 Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
7.31.16 Extended multibyte and wide character utilities . . . . . . . . . . 334
7.31.17 Wide character classification and mapping utilities . . . . . . . . 334
Annex A (informative) Language syntax summary 335
Annex B (informative) Library summary 347
Annex C (informative) Sequence points 367
Annex D (normative) Universal character names for identifiers 368
Annex E (informative) Implementation limits 369
Annex F (normative) IEC 60559 floating-point arithmetic 371
Annex G (normative) IEC 60559-compatible complex arithmetic 389
Contents ix
Annex H (informative) Language independent arithmetic 399
Annex I (informative) Common warnings 403
Annex J (informative) Portability issues 404
Annex K (normative) Bounds-checking interfaces 425
Annex L (normative) Analyzability 474
Annex M (informative) Change History 476
Bibliography 479
Index 480
x Contents
© ISO/IEC 2018– All rights reserved ISO/IEC 9899:2018 (E)
Foreword
1 ISO (the International Organization for Standardization) and IEC (the International Electrotechnical
Commission) form the specialized system for worldwide standardization. National bodies that
are member of ISO or IEC participate in the development of International Standards through
technical committees established by the respective organization to deal with particular fields of
technical activity. ISO and IEC technical committees collaborate in fields of mutual interest. Other
international organizations, governmental and non-governmental, in liaison with ISO and IEC, also
take part in the work. In the field of information technology, ISO and IEC have established a joint
technical committee, ISO/IEC JTC 1.
2 The procedures used to develop this document and those intended for its further maintenance are
described in the ISO/IEC Directives, Part 1. In particular, the different approval criteria needed for
the different types of document should be noted. This document was drafted in accordance with the
editorial rules of the ISO/IEC Directives, Part 2 (see www.iso.org/directives).
3 Attention is drawn to the possibility that some of the elements of this document may be the subject
of patent rights. ISO and IEC shall not be held responsible for identifying any or all such patent
rights. Details of any patent rights identified during the development of the document will be in the
Introduction and/or on the ISO list of patent declarations received (see www.iso.org/patents).
4 Any trade name used in this document is information given for the convenience of users and does
not constitute an endorsement.
5 For an explanation of the voluntary nature of standards, the meaning of ISO specific terms and
expressions related to conformity assessment, as well as information about ISO’s adherence to
the World Trade Organization (WTO) principles in the Technical Barriers to Trade (TBT), see the
following URL: www.iso.org/iso/foreword.html.
6 This document was prepared by Technical Committee ISO/IEC JTC 1, Information technology, Sub-
committee SC 22, Programming languages, their environments and system software interfaces.
7 This fourth edition cancels and replaces the third edition, ISO/IEC 9899:2011, which has been
technically revised. It also incorporates the Technical Corrigendum ISO/IEC 9899:2011/Cor 1:2012.
8 There are no major changes in this edition, only technical corrections and clarifications.
9 A complete change history can be found in Annex M.
Foreword xi
Introduction
1 With the introduction of new devices and extended character sets, new features could be added to
this document. Subclauses in the language and library clauses warn implementors and programmers
of usages which, though valid in themselves, could conflict with future additions.
2 Certain features are obsolescent, which means that they could be considered for withdrawal in future
revisions of this document. They are retained because of their widespread use, but their use in
new implementations (for implementation features) or new programs (for language [6.11] or library
features [7.31]) is discouraged.
3 This document is divided into four major subdivisions:
— preliminary elements (Clauses 1–4);
— the characteristics of environments that translate and execute C programs (Clause 5);
— the language syntax, constraints, and semantics (Clause 6);
— the library facilities (Clause 7).
4 Examples are provided to illustrate possible forms of the constructions described. Footnotes are
provided to emphasize consequences of the rules described in that subclause or elsewhere in this
document. References are used to refer to other related subclauses. Recommendations are provided
to give advice or guidance to implementors. Annexes define optional features, provide additional
information and summarize the information contained in this document. A bibliography lists
documents that were referred to during the preparation of this document.
5 The language clause (Clause 6) is derived from "The C Reference Manual".
6 The library clause (Clause 7) is based on the 1984 /usr/group Standard.
7 The Working Group responsible for this document (WG 14) maintains a site on the World Wide Web
athttp://www.open-std.org/JTC1/SC22/WG14/ containing ancillary information that may be of
interest to some readers such as a Rationale for many of the decisions made during its preparation
and a log of Defect Reports and Responses.
xii Introduction
© ISO/IEC 2018– All rights reserved ISO/IEC 9899:2018 (E)
INTERNATIONAL STANDARD ©ISO/IEC ISO/IEC 9899:2018
Programming languages — C
1. Scope
1 This document specifies the form and establishes the interpretation of programs written in the C
1)
programming language. It specifies
— the representation of C programs;
— the syntax and constraints of the C language;
— the semantic rules for interpreting C programs;
— the representation of input data to be processed by C programs;
— the representation of output data produced by C programs;
— the restrictions and limits imposed by a conforming implementation of C.
2 This document does not specify
— the mechanism by which C programs are transformed for use by a data-processing system;
— the mechanism by which C programs are invoked for use by a data-processing system;
— the mechanism by which input data are transformed for use by a C program;
— the mechanism by which output data are transformed after being produced by a C program;
— the size or complexity of a program and its data that will exceed the capacity of any specific
data-processing system or the capacity of a particular processor;
— all minimal requirements of a data-processing system that is capable of supporting a conform-
ing implementation.
1)
This document is designed to promote the portability of C programs among a variety of data-processing systems. It is
intended for use by implementors and programmers. Annex J gives an overview of portability issues that a C program might
encounter.
§ 1 General 1
2. Normative references
1 The following documents are referred to in the text in such a way that some or all of their content
constitutes requirements of this document. For dated references, only the edition cited applies.
For undated references, the latest edition of the referenced document (including any amendments)
applies.
2 ISO/IEC 2382:2015, Information technology — Vocabulary. Available from the ISO online browsing
platform at http://www.iso.org/obp
3 ISO 4217, Codes for the representation of currencies and funds
4 ISO 8601, Data elements and interchange formats — Information interchange — Representation of dates and
times
ISO/IEC 10646, Information technology — Universal Coded Character Set (UCS). Available from the
ISO/IEC Information Technology Task Force (ITTF) web site at http://isotc.iso.org/livelink/
_
livelink/fetch/2000/2489/Ittf Home/PubliclyAvailableStandards.htm
IEC 60559:1989, Binary floating-point arithmetic for microprocessor systems (previously designated
IEC 559:1989)
ISO 80000–2, Quantities and units — Part 2: Mathematical signs and symbols to be used in the natural
sciences and technology
2 General § 2
© ISO/IEC 2018– All rights reserved ISO/IEC 9899:2018 (E)
3. Terms, definitions and symbols
1 For the purposes of this document, the terms and definitions given in ISO/IEC 2382, ISO 80000–2,
and the following apply.
2 ISO and IEC maintain terminological databases for use in standardization at the following addresses:
— ISO Online browsing platform: available athttps://www.iso.org/obp
— IEC Electropedia: available athttp://www.electropedia.org/
3 Additional terms are defined where they appear in italic type or on the left side of a syntax rule.
Terms explicitly defined in this document are not to be presumed to refer implicitly to similar terms
defined elsewhere.
3.1
1 access (verb)
⟨execution-time action⟩ to read or modify the value of an object
2 Note 1 to entry: Where only one of these two actions is meant, "read" or "modify" is used.
3 Note 2 to entry: "Modify" includes the case where the new value being stored is the same as the previous value.
4 Note 3 to entry: Expressions that are not evaluated do not access objects.
3.2
1 alignment
requirement that objects of a particular type be located on storage boundaries with addresses that
are particular multiples of a byte address
3.3
1 argument
actual argument
DEPRECATED: actual parameter
expression in the comma-separated list bounded by the parentheses in a function call expression, or
a sequence of preprocessing tokens in the comma-separated list bounded by the parentheses in a
function-like macro invocation
3.4
1 behavior
external appearance or action
3.4.1
1 implementation-defined behavior
unspecified behavior where each implementation documents how the choice is made
2 Note 1 to entry: J.3 gives an overview over properties of C programs that lead to implementation-defined behavior.
3 EXAMPLE An example of implementation-defined behavior is the propagation of the high-order bit when a signed integer
is shifted right.
3.4.2
1 locale-specific behavior
behavior that depends on local conventions of nationality, culture, and language that each implemen-
tation documents
§ 3.4.2 General 3
© ISO/IEC 2018– All rights reserved
2 Note 1 to entry: J.4 gives an overview over properties of C programs that lead to locale-specific behavior.
3 EXAMPLE An example of locale-specific behavior is whether theislower function returns true for characters other than
the 26 lowercase Latin letters.
3.4.3
1 undefined behavior
behavior, upon use of a nonportable or erroneous program construct or of erroneous data, for which
this document imposes no requirements
2 Note 1 to entry: Possible undefined behavior ranges from ignoring the situation completely with unpredictable results,
to behaving during translation or program execution in a documented manner characteristic of the environment (with or
without the issuance of a diagnostic message), to terminating a translation or execution (with the issuance of a diagnostic
message).
3 Note 2 to entry: J.2 gives an overview over properties of C programs that lead to undefined behavior.
4 EXAMPLE An example of undefined behavior is the behavior on integer overflow.
3.4.4
1 unspecified behavior
behavior, that results from the use of an unspecified value, or other behavior upon which this
document provides two or more possibilities and imposes no further requirements on which is
chosen in any instance
2 Note 1 to entry: J.1 gives an overview over properties of C programs that lead to unspecified behavior.
3 EXAMPLE An example of unspecified behavior is the order in which the arguments to a function are evaluated.
3.5
1 bit
unit of data storage in the execution environment large enough to hold an object that can have one
of two values
2 Note 1 to entry: It need not be possible to express the address of each individual bit of an object.
3.6
1 byte
addressable unit of data storage large enough to hold any member of the basic character set of the
execution environment
2 Note 1 to entry: It is possible to express the address of each individual byte of an object uniquely.
3 Note 2 to entry: A byte is composed of a contiguous sequence of bits, the number of which is implementation-defined. The
least significant bit is called the low-order bit; the most significant bit is called the high-order bit.
3.7
1 character
⟨abstract⟩ member of a set of elements used for the organization, control, or representation of data
3.7.1
1 character
single-byte character
⟨C⟩ bit representation that fits in a byte
3.7.2
1 multibyte character
sequence of one or more bytes representing a member of the extended character set of either the
source or the execution environment
2 Note 1 to entry: The extended character set is a superset of the basic character set.
4 General § 3.7.2
© ISO/IEC 2018– All rights reserved ISO/IEC 9899:2018 (E)
3.7.3
1 wide character
_
value representable by an object of type wchar t, capable of representing any character in the
current locale
3.8
1 constraint
restriction, either syntactic or semantic, by which the exposition of language elements is to be
interpreted
3.9
1 correctly rounded result
representation in the result format that is nearest in value, subject to the current rounding mode, to
what the result would be given unlimited range and precision
2 Note 1 to entry: In this document, when the words "correctly rounded" are not immediately followed by "result", this is the
intended usage.
3.10
1 diagnostic message
message belonging to an implementation-defined subset of the implementation’s message output
3.11
1 forward reference
reference to a later subclause of this document that contains additional information relevant to this
subclause
3.12
1 implementation
particular set of software, running in a particular translation environment under particular con-
trol options, that performs translation of programs for, and supports execution of functions in, a
particular execution environment
3.13
1 implementation limit
restriction imposed upon programs by the implementation
3.14
1 memory location
either an object of scalar type, or a maximal sequence of adjacent bit-fields all having nonzero width
2 Note 1 to entry: Two threads of execution can update and access separate memory locations without interfering with each
other.
3 Note 2 to entry: A bit-field and an adjacent non-bit-field member are in separate memory locations. The same applies to
two bit-fields, if one is declared inside a nested structure declaration and the other is not, or if the two are separated by a
zero-length bit-field declaration, or if they are separated by a non-bit-field member declaration. It is not safe to concurrently
update two non-atomic bit-fields in the same structure if all members declared between them are also (nonzero-length)
bit-fields, no matter what the sizes of those intervening bit-fields happen to be.
4 EXAMPLE A structure declared as
struct {
char a;
int b:5, c:11,:0, d:8;
struct { int ee:8; } e;
}
§ 3.14 General 5
contains four separate memory locations: The member a, and bit-fields d and e.ee are each separate memory locations,
and can be modified concurrently without interfering with each other. The bit-fieldsb andc together constitute the fourth
memory location. The bit-fieldsb andc cannot be concurrently modified, butb anda, for example, can be.
3.15
1 object
region of data storage in the execution environment, the contents of which can represent values
2 Note 1 to entry: When referenced, an object can be interpreted as having a particular type; see 6.3.2.1.
3.16
1 parameter
formal parameter
DEPRECATED: formal argument
object declared as part of a function declaration or definition that acquires a value on entry to the
function, or an identifier from the comma-separated list bounded by the parentheses immediately
following the macro name in a function-like macro definition
3.17
1 recommended practice
specification that is strongly recommended as being in keeping with the intent of the standard, but
that might be impractical for some implementations
3.18
1 runtime-constraint
requirement on a program when calling a library function
2 Note 1 to entry: Despite the similar terms, a runtime-constraint is not a kind of constraint as defined by 3.8, and need not be
diagnosed at translation time.
3 Note 2 to entry: Implementations that support the extensions in Annex K are required to verify that the runtime-constraints
for a library function are not violated by the program; see K.3.1.4.
4 Note 3 to entry: Implementations that support Annex L are permitted to invoke a runtime-constraint handler when they
perform a trap.
3.19
1 value
precise meaning of the contents of an object when interpreted as having a specific type
3.19.1
1 implementation-defined value
unspecified value where each implementation documents how the choice is made
3.19.2
1 indeterminate value
either an unspecified value or a trap representation
3.19.3
1 unspecified value
valid value of the relevant type where this document imposes no requirements on which value is
chosen in any instance
2 Note 1 to entry: An unspecified value cannot be a trap representation.
6 General § 3.19.3
© ISO/IEC 2018– All rights reserved ISO/IEC 9899:2018 (E)
3.19.4
1 trap representation
an object representation that need not represent a value of the object type
3.19.5
1 perform a trap
interrupt execution of the program such that no further operations are performed
2 Note 1 to entry: In this document, when the word "trap" is not immediately followed by "representation", this is the
2)
intended usage.
3 Note 2 to entry: Implementations that support Annex L are permitted to invoke a runtime-constraint handler when they
perform a trap.
3.20
1 ⌈x⌉
ceiling ofx
the least integer greater than or equal tox
2 EXAMPLE ⌈2.4⌉ is3,⌈−2.4⌉ is−2.
3.21
1 ⌊x⌋
floor ofx
the greatest integer less than or equal tox
2 EXAMPLE ⌊2.4⌋ is2,⌊−2.4⌋ is−3.
2)
For example, "Trapping or stopping (if supported) is disabled . . . " (F.8.2). Note that fetching a trap representation might
perform a trap but is not required to (see 6.2
...

Questions, Comments and Discussion

Ask us and Technical Secretary will try to provide an answer. You can facilitate discussion about the standard in here.

Loading comments...

Frequently Asked Questions

ISO/IEC 9899:2018 is a standard published by the International Organization for Standardization (ISO). Its full title is "Information technology - Programming languages - C". This standard covers: 1 This document specifies the form and establishes the interpretation of programs written in the C programming language.1) It specifies - the representation of C programs; - the syntax and constraints of the C language; - the semantic rules for interpreting C programs; - the representation of input data to be processed by C programs; - the representation of output data produced by C programs; - the restrictions and limits imposed by a conforming implementation of C. 2 This document does not specify - the mechanism by which C programs are transformed for use by a data-processing system; - the mechanism by which C programs are invoked for use by a data-processing system; - the mechanism by which input data are transformed for use by a C program; - the mechanism by which output data are transformed after being produced by a C program; - the size or complexity of a program and its data that will exceed the capacity of any specific data-processing system or the capacity of a particular processor; - all minimal requirements of a data-processing system that is capable of supporting a conforming implementation.

1 This document specifies the form and establishes the interpretation of programs written in the C programming language.1) It specifies - the representation of C programs; - the syntax and constraints of the C language; - the semantic rules for interpreting C programs; - the representation of input data to be processed by C programs; - the representation of output data produced by C programs; - the restrictions and limits imposed by a conforming implementation of C. 2 This document does not specify - the mechanism by which C programs are transformed for use by a data-processing system; - the mechanism by which C programs are invoked for use by a data-processing system; - the mechanism by which input data are transformed for use by a C program; - the mechanism by which output data are transformed after being produced by a C program; - the size or complexity of a program and its data that will exceed the capacity of any specific data-processing system or the capacity of a particular processor; - all minimal requirements of a data-processing system that is capable of supporting a conforming implementation.

ISO/IEC 9899:2018 is classified under the following ICS (International Classification for Standards) categories: 35.060 - Languages used in information technology. The ICS classification helps identify the subject area and facilitates finding related standards.

ISO/IEC 9899:2018 has the following relationships with other standards: It is inter standard links to ISO/IEC 9899:2024, ISO/IEC 9899:2011, ISO/IEC 9899:2011/Cor 1:2012. Understanding these relationships helps ensure you are using the most current and applicable version of the standard.

You can purchase ISO/IEC 9899:2018 directly from iTeh Standards. The document is available in PDF format and is delivered instantly after payment. Add the standard to your cart and complete the secure checkout process. iTeh Standards is an authorized distributor of ISO standards.

이 기사는 ISO/IEC 9899:2018에 대해 다루고 있는데, 이는 C 프로그래밍 언어에 대한 명세서입니다. 이 명세서는 C 프로그램의 표현 방법과 해석을 명시하며, C 언어의 구문과 제약 사항, 그리고 C 프로그램 해석을 위한 의미론적 규칙을 정의합니다. 또한 C 프로그램에서 처리할 입력 데이터의 표현과 프로그램이 생성한 출력 데이터의 표현, 그리고 C 준수 구현의 제한과 한계도 명시합니다. 하지만 이 문서는 C 프로그램을 데이터 처리 시스템에서 사용하기 위해 변환되는 메커니즘, C 프로그램을 사용하기 위해 어떻게 호출되는지, C 프로그램이 생성한 출력 데이터가 변환되는 메커니즘, 특정 데이터 처리 시스템이나 프로세서의 용량을 초과하는 프로그램이나 데이터의 크기나 복잡성, 그리고 준수 구현을 지원할 수 있는 데이터 처리 시스템의 최소 요구 사항을 정의하지 않습니다.

기사 제목: ISO/IEC 9899:2018 - 정보 기술 - 프로그래밍 언어 - C 기사 내용: 이 문서는 C 프로그래밍 언어로 작성된 프로그램의 형식과 해석을 명시합니다. 이 문서는 C 프로그램의 표현 방식, C 언어의 구문과 제약조건, C 프로그램의 의미 규칙, C 프로그램이 처리하기 위한 입력 데이터의 표현, C 프로그램이 생성한 출력 데이터의 표현, C의 준수 구현에 부과된 제약과 한계를 정의합니다. 그러나 이 문서는 C 프로그램을 데이터 처리 시스템에서 사용하기 위해 변환되는 메커니즘, 데이터 처리 시스템에서 C 프로그램을 호출하기 위한 메커니즘, C 프로그램에서 입력 데이터가 처리되기 전에 변환되는 메커니즘, C 프로그램이 생성한 출력 데이터가 변환되는 메커니즘, 특정 데이터 처리 시스템이나 프로세서의 용량을 초과하는 프로그램 및 데이터의 크기 또는 복잡도, 준수 구현을 지원할 수 있는 데이터 처리 시스템의 최소 요구 사항을 정의하지 않습니다.

記事のタイトル: ISO/IEC 9899:2018 - 情報技術 - プログラミング言語 - C 記事の内容: この文書は、Cプログラミング言語で書かれたプログラムの形式と解釈を指定しています。Cプログラムの表現方法、C言語の構文と制約、Cプログラムの意味の規則、Cプログラムが処理するための入力データの表現、Cプログラムが生成する出力データの表現、Cの準拠実装によって課される制約や制限を特定します。ただし、この文書はCプログラムをデータ処理システムで使用するための変換メカニズム、Cプログラムをデータ処理システムで呼び出すためのメカニズム、入力データをCプログラムで処理する前に変換するメカニズム、Cプログラムが生成した出力データを変換するメカニズム、特定のデータ処理システムやプロセッサの容量を超えるプログラムやデータのサイズや複雑さ、Cの準拠実装をサポートできるデータ処理システムの最小要件を定義しません。

The article discusses ISO/IEC 9899:2018, which is a specification for the C programming language. It provides guidelines for the representation, syntax, and constraints of C programs, as well as the rules for interpreting them. It also covers the representation of input and output data, as well as the restrictions imposed by a conforming implementation of C. However, the document does not specify the mechanisms for transforming C programs, invoking them, or transforming data. It also does not determine the size or complexity of a program that exceeds the capacity of a data-processing system, nor does it define all minimal requirements for supporting a conforming implementation.

The article discusses ISO/IEC 9899:2018, which is a standard that specifies the form and interpretation of programs written in the C programming language. It covers various aspects such as the representation, syntax, and constraints of C programs, the rules for interpreting C programs, and the representation of input and output data. However, it does not specify the mechanisms for transforming C programs for use by a data-processing system, invoking C programs, transforming input and output data, or the size and complexity limitations of a data-processing system. It also does not define all the minimal requirements of a system that can support a conforming implementation of C.

この記事では、ISO/IEC 9899:2018について説明されています。これはCプログラミング言語の仕様書です。この仕様書では、Cプログラムの表現方法と解釈に関するガイドラインが示されています。C言語の構文や制約、Cプログラムの解釈に関する意味論のルールも定義されています。さらに、Cプログラムの入力データや出力データの表現方法、Cの準拠実装における制限も指定されています。ただし、この文書はCプログラムをデータ処理システムで使用するための変換メカニズム、Cプログラムの起動メカニズム、入力データの変換メカニズム、Cプログラムが生成後の出力データの変換メカニズム、特定のデータ処理システムやプロセッサの容量を超えるプログラムやデータのサイズや複雑性、および準拠実装をサポートするためのデータ処理システムの最低要件は定義されていません。