X-Git-Url: http://nsz.repo.hu/git/?p=c-standard;a=blobdiff_plain;f=n1570.html;h=b2639fca4abc3a6489be90ff9fdc8f711c9f8d99;hp=c2dd90475a4540c31082d787b81fb0073261452a;hb=HEAD;hpb=2b20fe1f26910828db54f2f7a8ed2e2097e14104 diff --git a/n1570.html b/n1570.html index c2dd904..b2639fc 100644 --- a/n1570.html +++ b/n1570.html @@ -842,8 +842,8 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
1
argument
- actual argument
- actual parameter (deprecated)
+ actual argument
+ actual parameter (deprecated)
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
@@ -1130,7 +1130,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
1
- [^ x^]
+ [^ x ^]
ceiling of x: the least integer greater than or equal to x
2 EXAMPLE [^2.4^] is 3, [^-2.4^] is -2. @@ -1139,7 +1139,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
1
- [_ x_]
+ [_ x _]
floor of x: the greatest integer less than or equal to x
2 EXAMPLE [_2.4_] is 2, [_-2.4_] is -3. @@ -1176,7 +1176,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
6 The two forms of conforming implementation are hosted and freestanding. A conforming hosted implementation shall accept any strictly conforming program. A conforming - freestanding implementation shall accept any strictly conforming program in which the * + freestanding implementation shall accept any strictly conforming program in which the use of the features specified in the library clause (clause 7) is confined to the contents of the standard headers <float.h>, <iso646.h>, <limits.h>, <stdalign.h>, <stdarg.h>, <stdbool.h>, <stddef.h>, <stdint.h>, and @@ -1882,22 +1882,22 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. Both the basic source and basic execution character sets shall have the following members: the 26 uppercase letters of the Latin alphabet
- A B C D E F G H I J K L M - N O P Q R S T U V W X Y Z + A B C D E F G H I J K L M + N O P Q R S T U V W X Y Zthe 26 lowercase letters of the Latin alphabet
- a b c d e f g h i j k l m - n o p q r s t u v w x y z + a b c d e f g h i j k l m + n o p q r s t u v w x y zthe 10 decimal digits
- 0 1 2 3 4 5 6 7 8 9 + 0 1 2 3 4 5 6 7 8 9the following 29 graphic characters
- ! " # % & ' ( ) * + , - . / : - ; < = > ? [ \ ] ^ _ { | } ~ + ! " # % & ' ( ) * + , - . / : + ; < = > ? [ \ ] ^ _ { | } ~the space character, and control characters representing horizontal tab, vertical tab, and form feed. The representation of each member of the source and execution basic @@ -2003,29 +2003,23 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
2 Alphabetic escape sequences representing nongraphic characters in the execution character set are intended to produce actions on display devices as follows: - \a (alert) Produces an audible or visible alert without changing the active position. - \b (backspace) Moves the active position to the previous position on the current line. If -
+
+
+
tabulation position. If the active position is at or past the last defined vertical tabulation position, the behavior of the display device is unspecified. -+
3 Each of these escape sequences shall produce a unique implementation-defined value which can be stored in a single char object. The external representations in a text file @@ -2068,14 +2062,10 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. character)
universal character name specifying a short identifier of 00010000 or more is considered 10 characters, and each extended source character is considered the same number of characters as the corresponding universal character name, if any)19) -
CHAR_BIT 8 +
+ SCHAR_MIN -127 // -(27 - 1) +
+ SCHAR_MAX +127 // 27 - 1 +
+ UCHAR_MAX 255 // 28 - 1 +
+ CHAR_MIN see below +
CHAR_MAX see below +
MB_LEN_MAX 1 +
+ SHRT_MIN -32767 // -(215 - 1) +
+ SHRT_MAX +32767 // 215 - 1 +
+ USHRT_MAX 65535 // 216 - 1 +
+ INT_MIN -32767 // -(215 - 1) +
+ INT_MAX +32767 // 215 - 1 +
+ UINT_MAX 65535 // 216 - 1 +
+ LONG_MIN -2147483647 // -(231 - 1) +
+ LONG_MAX +2147483647 // 231 - 1 +
+ ULONG_MAX 4294967295 // 232 - 1 +
+ LLONG_MIN -9223372036854775807 // -(263 - 1) +
+ LLONG_MAX +9223372036854775807 // 263 - 1 +
+ ULLONG_MAX 18446744073709551615 // 264 - 1 +
2 If the value of an object of type char is treated as a signed integer when used in an expression, the value of CHAR_MIN shall be the same as that of SCHAR_MIN and the value of CHAR_MAX shall be the same as that of SCHAR_MAX. Otherwise, the value of CHAR_MIN shall be 0 and the value of CHAR_MAX shall be the same as that of - UCHAR_MAX.20) The value UCHAR_MAX shall equal 2CHAR_BIT - 1. + UCHAR_MAX.20) The value UCHAR_MAX shall equal 2CHAR_BIT - 1.
Forward references: representations of types (6.2.6), conditional inclusion (6.10.1).
Footnotes @@ -2185,22 +2213,21 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. b base or radix of exponent representation (an integer > 1) e exponent (an integer between a minimum emin and a maximum emax ) p precision (the number of base-b digits in the significand) - fk nonnegative integers less than b (the significand digits) + fk nonnegative integers less than b (the significand digits)
2 A floating-point number (x) is defined by the following model:
p - x = sb e (Sum) f k b-k , + x = s be (Sum) fk b-k , emin <= e <= emax k=1 - emin <= e <= emax
3 - In addition to normalized floating-point numbers ( f 1 > 0 if x != 0), floating types may be + In addition to normalized floating-point numbers ( f1 > 0 if x != 0), floating types may be able to contain other kinds of floating-point numbers, such as subnormal floating-point - numbers (x != 0, e = emin , f 1 = 0) and unnormalized floating-point numbers (x != 0, - e > emin , f 1 = 0), and values that are not floating-point numbers, such as infinities and + numbers (x != 0, e = emin , f1 = 0) and unnormalized floating-point numbers (x != 0, + e > emin , f1 = 0), and values that are not floating-point numbers, such as infinities and NaNs. A NaN is an encoding signifying Not-a-Number. A quiet NaN propagates through almost every arithmetic operation without raising a floating-point exception; a signaling NaN generally raises a floating-point exception when occurring as an @@ -2231,8 +2258,8 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. All integer values in the <float.h> header, except FLT_ROUNDS, shall be constant expressions suitable for use in #if preprocessing directives; all floating values shall be constant expressions. All except DECIMAL_DIG, FLT_EVAL_METHOD, FLT_RADIX, - and FLT_ROUNDS have separate names for all three floating-point types. The floating- - point model representation is provided for all values except FLT_EVAL_METHOD and + and FLT_ROUNDS have separate names for all three floating-point types. The floating-point + model representation is provided for all values except FLT_EVAL_METHOD and FLT_ROUNDS.
8 The rounding mode for floating-point addition is characterized by the implementation- @@ -2256,14 +2283,14 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. may be greater than required by the type. The use of evaluation formats is characterized by the implementation-defined value of FLT_EVAL_METHOD:24)
- -1 indeterminable; - 0 evaluate all operations and constants just to the range and precision of the + -1 indeterminable; + 0 evaluate all operations and constants just to the range and precision of the type; - 1 evaluate operations and constants of type float and double to the + 1 evaluate operations and constants of type float and double to the range and precision of the double type, evaluate long double operations and constants to the range and precision of the long double type; - 2 evaluate all operations and constants to the range and precision of the + 2 evaluate all operations and constants to the range and precision of the long double type.All other negative values for FLT_EVAL_METHOD characterize implementation-defined @@ -2283,16 +2310,16 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. those shown, with the same sign:
+ FLT_RADIX 2 +
FLT_MANT_DIG DBL_MANT_DIG LDBL_MANT_DIG +
FLT_DECIMAL_DIG 6 DBL_DECIMAL_DIG 10 LDBL_DECIMAL_DIG 10 +
DECIMAL_DIG 10 +
FLT_MIN_EXP DBL_MIN_EXP LDBL_MIN_EXP +
- [ ] -FLT_MIN_10_EXP -37 DBL_MIN_10_EXP -37 LDBL_MIN_10_EXP -37 +
@@ -2346,7 +2379,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. LDBL_MAX_EXP
FLT_MAX_10_EXP +37 DBL_MAX_10_EXP +37 @@ -2357,7 +2390,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. The values given in the following list shall be replaced by constant expressions with implementation-defined values that are greater than or equal to those shown:
FLT_MAX 1E+37 DBL_MAX 1E+37 @@ -2369,13 +2402,13 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. implementation-defined (positive) values that are less than or equal to those shown:
FLT_EPSILON 1E-5 DBL_EPSILON 1E-9 LDBL_EPSILON 1E-9-
FLT_MIN 1E-37 @@ -2397,11 +2430,9 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. float:6 - x = s16e (Sum) f k 16-k , + x = s 16e (Sum) fk 16-k , -31 <= e <= +32 k=1 - -31 <= e <= +32-FLT_RADIX 16 FLT_MANT_DIG 6 @@ -2422,18 +2453,14 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. <float.h> header for types float and double:24 - x f = s2e (Sum) f k 2-k , + xf = s 2e (Sum) fk 2-k , -125 <= e <= +128 k=1 - -125 <= e <= +128-53 - x d = s2e (Sum) f k 2-k , + xd = s 2e (Sum) fk 2-k , -1021 <= e <= +1024 k=1 - -1021 <= e <= +1024-FLT_RADIX 2 DECIMAL_DIG 17 @@ -3039,12 +3066,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. represented by successive bits are additive, begin with 1, and are multiplied by successive integral powers of 2, except perhaps the bit with the highest position. (Adapted from the American National Dictionary for Information Processing Systems.) A byte contains CHAR_BIT bits, and the values of - type unsigned char range from 0 to 2 - -- CHAR_BIT - - 1. -+ type unsigned char range from 0 to 2CHAR_BIT - 1.50) Thus, an automatic variable can be initialized to a trap representation without causing undefined behavior, but the value of the variable cannot be used until a proper value is stored in it. @@ -3064,8 +3086,8 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. For unsigned integer types other than unsigned char, the bits of the object representation shall be divided into two groups: value bits and padding bits (there need not be any of the latter). If there are N value bits, each bit shall represent a different - power of 2 between 1 and 2 N -1 , so that objects of that type shall be capable of - representing values from 0 to 2 N - 1 using a pure binary representation; this shall be + power of 2 between 1 and 2N - 1, so that objects of that type shall be capable of + representing values from 0 to 2N - 1 using a pure binary representation; this shall be known as the value representation. The values of any padding bits are unspecified.53)
2 For signed integer types, the bits of the object representation shall be divided into three @@ -3080,8 +3102,8 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. following ways:
- First, if the corresponding real type of either operand is long double, the other +
2 The values of floating operands and of the results of floating expressions may be represented in greater range and precision than that required by the type; the types are not @@ -3666,7 +3690,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
keyword: one of - auto * if unsigned + auto if unsigned break inline void case int volatile char long while @@ -3710,12 +3734,12 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. universal-character-name other implementation-defined characters nondigit: one of - _ a b c d e f g h i j k l m - n o p q r s t u v w x y z - A B C D E F G H I J K L M - N O P Q R S T U V W X Y Z + _ a b c d e f g h i j k l m + n o p q r s t u v w x y z + A B C D E F G H I J K L M + N O P Q R S T U V W X Y Z digit: one of - 0 1 2 3 4 5 6 7 8 9 + 0 1 2 3 4 5 6 7 8 9
Semantics
2 @@ -3866,39 +3890,39 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
integer-constant: - decimal-constant integer-suffixopt - octal-constant integer-suffixopt - hexadecimal-constant integer-suffixopt + decimal-constant integer-suffixopt + octal-constant integer-suffixopt + hexadecimal-constant integer-suffixopt decimal-constant: nonzero-digit decimal-constant digit octal-constant: - 0 - octal-constant octal-digit + 0 + octal-constant octal-digit hexadecimal-constant: hexadecimal-prefix hexadecimal-digit hexadecimal-constant hexadecimal-digit hexadecimal-prefix: one of - 0x 0X + 0x 0X nonzero-digit: one of - 1 2 3 4 5 6 7 8 9 + 1 2 3 4 5 6 7 8 9 octal-digit: one of - 0 1 2 3 4 5 6 7 - hexadecimal-digit: one of - 0 1 2 3 4 5 6 7 8 9 - a b c d e f - A B C D E F - integer-suffix: - unsigned-suffix long-suffixopt - unsigned-suffix long-long-suffix - long-suffix unsigned-suffixopt - long-long-suffix unsigned-suffixopt - unsigned-suffix: one of - u U - long-suffix: one of - l L - long-long-suffix: one of - ll LL + 0 1 2 3 4 5 6 7 + hexadecimal-digit: one of + 0 1 2 3 4 5 6 7 8 9 + a b c d e f + A B C D E F + integer-suffix: + unsigned-suffix long-suffixopt + unsigned-suffix long-long-suffix + long-suffix unsigned-suffixopt + long-long-suffix unsigned-suffixopt + unsigned-suffix: one of + u U + long-suffix: one of + l L + long-long-suffix: one of + ll LL
Description
2 @@ -3918,43 +3942,69 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. The type of an integer constant is the first of the corresponding list in which its value can be represented. -
- Octal or Hexadecimal -- Suffix Decimal Constant Constant - - none int int -
- long int unsigned int - long long int long int - unsigned long int - long long int - unsigned long long int -- - u or U unsigned int unsigned int -
- unsigned long int unsigned long int - unsigned long long int unsigned long long int -- - l or L long int long int -
- long long int unsigned long int - long long int - unsigned long long int -- - Both u or U unsigned long int unsigned long int - and l or L unsigned long long int unsigned long long int - - ll or LL long long int long long int -
- unsigned long long int -- - Both u or U unsigned long long int unsigned long long int - and ll or LL +
Suffix | Decimal Constant | Octal or Hexadecimal Constant + |
---|---|---|
none + | +int +long int +long long int ++ | +int +unsigned int +long int +unsigned long int +long long int +unsigned long long int ++ |
u or U + | +unsigned int +unsigned long int +unsigned long long int ++ | +unsigned int +unsigned long int +unsigned long long int ++ |
l or L + | +long int +long long int ++ | +long int +unsigned long int +long long int +unsigned long long int ++ |
Both u or U and l or L + | +unsigned long int +unsigned long long int ++ | +unsigned long int +unsigned long long int ++ |
ll or LL + | +long long int ++ | +long long int +unsigned long long int ++ |
Both u or U and ll or LL + | +unsigned long long int ++ | +unsigned long long int ++ |
6 If an integer constant cannot be represented by any type in its list, it may have an extended integer type, if the extended integer type can represent its value. If all of the @@ -4084,24 +4134,24 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. c-char c-char-sequence c-char c-char: - any member of the source character set except - the single-quote ', backslash \, or new-line character - escape-sequence + any member of the source character set except + the single-quote ', backslash \, or new-line character + escape-sequence escape-sequence: simple-escape-sequence octal-escape-sequence hexadecimal-escape-sequence universal-character-name simple-escape-sequence: one of - \' \" \? \\ - \a \b \f \n \r \t \v + \' \" \? \\ + \a \b \f \n \r \t \v octal-escape-sequence: - \ octal-digit - \ octal-digit octal-digit - \ octal-digit octal-digit octal-digit - hexadecimal-escape-sequence: - \x hexadecimal-digit - hexadecimal-escape-sequence hexadecimal-digit + \ octal-digit + \ octal-digit octal-digit + \ octal-digit octal-digit octal-digit + hexadecimal-escape-sequence: + \x hexadecimal-digit + hexadecimal-escape-sequence hexadecimal-digit
Description
2 @@ -4150,13 +4200,13 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
9 The value of an octal or hexadecimal escape sequence shall be in the range of representable values for the corresponding type: -
- Prefix Corresponding Type - none unsigned char - L the unsigned type corresponding to wchar_t - u char16_t - U char32_t -+
Prefix | Corresponding Type + |
---|---|
none | unsigned char
+ |
L | the unsigned type corresponding to wchar_t
+ |
u | char16_t
+ |
U | char32_t
+ |
Semantics
10 An integer character constant has type int. The value of an integer character constant @@ -4221,7 +4271,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
string-literal: - encoding-prefixopt " s-char-sequenceopt " + encoding-prefixopt " s-char-sequenceopt " encoding-prefix: u8 u @@ -4231,9 +4281,9 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. s-char s-char-sequence s-char s-char: - any member of the source character set except - the double-quote ", backslash \, or new-line character - escape-sequence + any member of the source character set except + the double-quote ", backslash \, or new-line character + escape-sequence
Constraints
2 @@ -4333,13 +4383,13 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
punctuator: one of - [ ] ( ) { } . -> - ++ -- & * + - ~ ! - / % << >> < > <= >= == != ^ | && || - ? : ; ... - = *= /= %= += -= <<= >>= &= ^= |= - , # ## - <: :> <% %> %: %:%: + [ ] ( ) { } . -> + ++ -- & * + - ~ ! + / % << >> < > <= >= == != ^ | && || + ? : ; ... + = *= /= %= += -= <<= >>= &= ^= |= + , # ## + <: :> <% %> %: %:%:
Semantics
2 @@ -5525,14 +5575,14 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. greater than or equal to the width of the promoted left operand, the behavior is undefined.
4 The result of E1 << E2 is E1 left-shifted E2 bit positions; vacated bits are filled with - zeros. If E1 has an unsigned type, the value of the result is E1 x 2E2 , reduced modulo + zeros. If E1 has an unsigned type, the value of the result is E1 x 2E2 , reduced modulo one more than the maximum value representable in the result type. If E1 has a signed - type and nonnegative value, and E1 x 2E2 is representable in the result type, then that is + type and nonnegative value, and E1 x 2E2 is representable in the result type, then that is the resulting value; otherwise, the behavior is undefined.
5 The result of E1 >> E2 is E1 right-shifted E2 bit positions. If E1 has an unsigned type or if E1 has a signed type and a nonnegative value, the value of the result is the integral - part of the quotient of E1 / 2E2 . If E1 has a signed type and a negative value, the + part of the quotient of E1 / 2E2 . If E1 has a signed type and a negative value, the resulting value is implementation-defined.
Contents @@ -5845,7 +5895,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. conditional-expression unary-expression assignment-operator assignment-expression assignment-operator: one of - = *= /= %= += -= <<= >>= &= ^= |= + = *= /= %= += -= <<= >>= &= ^= |=
Constraints
2 @@ -6517,10 +6567,10 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
21 Following the above declaration:
- struct s t1 = { 0 }; // valid - struct s t2 = { 1, { 4.2 }}; // invalid - t1.n = 4; // valid - t1.d[0] = 4.2; // might be undefined behavior + struct s t1 = { 0 }; // valid + struct s t2 = { 1, { 4.2 }}; // invalid + t1.n = 4; // valid + t1.d[0] = 4.2; // might be undefined behaviorThe initialization of t2 is invalid (and violates a constraint) because struct s is treated as if it did not contain member d. The assignment to t1.d[0] is probably undefined behavior, but it is possible that @@ -7789,11 +7839,11 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
void copyt(int n) { - typedef int B[n]; // B is n ints, n evaluated now + typedef int B[n]; // B is n ints, n evaluated now n += 1; - B a; // a is n ints, n without += 1 - int b[n]; // a and b are different sizes - for (int i = 1; i < n; i++) + B a; // a is n ints, n without += 1 + int b[n]; // a and b are different sizes + for (int i = 1; i < n; i++) a[i-1] = b[i]; }@@ -7960,10 +8010,10 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
26 EXAMPLE 3 The declaration
- int y[4][3] = { - { 1, 3, 5 }, - { 2, 4, 6 }, - { 3, 5, 7 }, + int y[4][3] = { + { 1, 3, 5 }, + { 2, 4, 6 }, + { 3, 5, 7 }, };is a definition with a fully bracketed initialization: 1, 3, and 5 initialize the first row of y (the array object @@ -8082,10 +8132,10 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. EXAMPLE 9 Arrays can be initialized to correspond to the elements of an enumeration by using designators:
- enum { member_one, member_two }; - const char *nm[] = { - [member_two] = "member two", - [member_one] = "member one", + enum { member_one, member_two }; + const char *nm[] = { + [member_two] = "member two", + [member_one] = "member one", };@@ -8544,13 +8594,13 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. goto lab3; // invalid: going INTO scope of VLA. { double a[n]; - a[j] = 4.4; + a[j] = 4.4; lab3: - a[j] = 3.3; + a[j] = 3.3; goto lab4; // valid: going WITHIN scope of VLA. - a[j] = 5.5; + a[j] = 5.5; lab4: - a[j] = 6.6; + a[j] = 6.6; } goto lab4; // invalid: going INTO scope of VLA. @@ -8566,14 +8616,14 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. A continue statement causes a jump to the loop-continuation portion of the smallest enclosing iteration statement; that is, to the end of the loop body. More precisely, in each of the statements - while (/* ... */) { do { for (/* ... */) {
+ while (/* ... */) { do { for (/* ... */) { /* ... */ /* ... */ /* ... */ continue; continue; continue; /* ... */ /* ... */ /* ... */ -contin: ; contin: ; contin: ; } } while (/* ... */); } + unless the continue statement shown is in an enclosed iteration statement (in which case it is interpreted within that statement), it is equivalent to goto contin;.159) @@ -9686,36 +9736,26 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
1 The following macro names shall be defined by the implementation: - __DATE__ The date of translation of the preprocessing translation unit: a character -
+
+
+
+
Forward references: the asctime function (7.27.3.1).
Footnotes @@ -9731,8 +9771,8 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
1 The following macro names are conditionally defined by the implementation: - __STDC_ISO_10646__ An integer constant of the form yyyymmL (for example, -
+
+
+
+
Forward references: common definitions (7.19), unicode utilities (7.28). @@ -9770,42 +9804,28 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
1 The following macro names are conditionally defined by the implementation: - __STDC_ANALYZABLE__ The integer constant 1, intended to indicate conformance to -
+
+
+
+
+
+
+
+
2 An implementation that defines __STDC_NO_COMPLEX__ shall not define __STDC_IEC_559_COMPLEX__. @@ -10246,7 +10266,9 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
Footnotes
191) The message written might be of the form:
+
Assertion failed: expression, function abc, file xyz, line nnn.
+
Contents @@ -10305,7 +10327,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
Footnotes
192) See ''future library directions'' (7.31.1). -
193) The imaginary unit is a number i such that i 2 = -1. +
193) The imaginary unit is a number i such that i2 = -1.
194) A specification for imaginary types is in informative annex G. @@ -10367,8 +10389,8 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
(x + iy) x (u + iv) = (xu - yv) + i(yu + xv) - (x + iy) / (u + iv) = [(xu + yv) + i(yu - xv)]/(u2 + v 2 ) - | x + iy | = (sqrt) x 2 + y 2 + (x + iy) / (u + iv) = [(xu + yv) + i(yu - xv)]/(u2 + v2 ) + | x + iy | = (sqrt)(x2 + y2) -----where the programmer can determine they are safe. @@ -10683,7 +10705,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
Description
2 - The cpow functions compute the complex power function xy , with a branch cut for the + The cpow functions compute the complex power function xy , with a branch cut for the first parameter along the negative real axis.
Returns
3 @@ -11242,9 +11264,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. FE_DFL_ENV represents the default floating-point environment -- the one installed at program startup -
10 Additional implementation-defined environments, with macro definitions beginning with @@ -12064,168 +12084,144 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. strings shall start and end in the initial shift state. The members with type char are nonnegative numbers, any of which can be CHAR_MAX to indicate that the value is not available in the current locale. The members include the following: - char *decimal_point -
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+ +
+
+
4 The elements of grouping and mon_grouping are interpreted according to the following: - CHAR_MAX No further grouping is to be performed. - 0 The previous element is to be repeatedly used for the remainder of the -
- digits. -- other The integer value is the number of digits that compose the current group. -
- The next element is examined to determine the size of the next group of - digits before the current group. -+
5 The values of p_sep_by_space, n_sep_by_space, int_p_sep_by_space, and int_n_sep_by_space are interpreted according to the following: - 0 No space separates the currency symbol and value. - 1 If the currency symbol and sign string are adjacent, a space separates them from the -
- value; otherwise, a space separates the currency symbol from the value. -- 2 If the currency symbol and sign string are adjacent, a space separates them; -
+
6 The values of p_sign_posn, n_sign_posn, int_p_sign_posn, and int_n_sign_posn are interpreted according to the following: - 0 Parentheses surround the quantity and currency symbol. - 1 The sign string precedes the quantity and currency symbol. - 2 The sign string succeeds the quantity and currency symbol. - 3 The sign string immediately precedes the currency symbol. - 4 The sign string immediately succeeds the currency symbol. +
7 The implementation shall behave as if no library function calls the localeconv @@ -12241,21 +12237,20 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. EXAMPLE 1 The following table illustrates rules which may well be used by four countries to format monetary quantities.
- Local format International format -+ Local format International format - Country Positive Negative Positive Negative + Country Positive Negative Positive Negative Country1 1.234,56 mk -1.234,56 mk FIM 1.234,56 FIM -1.234,56 Country2 L.1.234 -L.1.234 ITL 1.234 -ITL 1.234 - Country3 fl. 1.234,56 fl. -1.234,56 NLG 1.234,56 NLG -1.234,56 + Country3 fl. 1.234,56 fl. -1.234,56 NLG 1.234,56 NLG -1.234,56 Country4 SFrs.1,234.56 SFrs.1,234.56C CHF 1,234.56 CHF 1,234.56C +
10 For these four countries, the respective values for the monetary members of the structure returned by localeconv could be:
- Country1 Country2 Country3 Country4 -+ Country1 Country2 Country3 Country4 mon_decimal_point "," "" "," "." mon_thousands_sep "." "." "." "," @@ -12278,31 +12273,27 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. int_n_sep_by_space 2 1 2 1 int_p_sign_posn 1 1 1 1 int_n_sign_posn 4 1 4 2 +
11 EXAMPLE 2 The following table illustrates how the cs_precedes, sep_by_space, and sign_posn members affect the formatted value.
p_sep_by_space -- p_cs_precedes p_sign_posn 0 1 2 - -
- 0 0 (1.25$) (1.25 $) (1.25$) - 1 +1.25$ +1.25 $ + 1.25$ - 2 1.25$+ 1.25 $+ 1.25$ + - 3 1.25+$ 1.25 +$ 1.25+ $ - 4 1.25$+ 1.25 $+ 1.25$ + -+ p_cs_precedes p_sign_posn 0 1 2 + 0 0 (1.25$) (1.25 $) (1.25$) + 1 +1.25$ +1.25 $ + 1.25$ + 2 1.25$+ 1.25 $+ 1.25$ + + 3 1.25+$ 1.25 +$ 1.25+ $ + 4 1.25$+ 1.25 $+ 1.25$ + -
- 1 0 ($1.25) ($ 1.25) ($1.25) - 1 +$1.25 +$ 1.25 + $1.25 - 2 $1.25+ $ 1.25+ $1.25 + - 3 +$1.25 +$ 1.25 + $1.25 - 4 $+1.25 $+ 1.25 $ +1.25 + 1 0 ($1.25) ($ 1.25) ($1.25) + 1 +$1.25 +$ 1.25 + $1.25 + 2 $1.25+ $ 1.25+ $1.25 + + 3 +$1.25 +$ 1.25 + $1.25 + 4 $+1.25 $+ 1.25 $ +1.25
Contents @@ -12931,7 +12922,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. magnitude of x is too large.
Returns
3 - The exp functions return ex . + The exp functions return ex.
Returns
3 - The exp2 functions return 2x . + The exp2 functions return 2x.
Returns
3 - The expm1 functions return ex - 1. + The expm1 functions return ex - 1.
Footnotes
237) For small magnitude x, expm1(x) is expected to be more accurate than exp(x) - 1. @@ -12992,7 +12983,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
3 If value is not a floating-point number or if the integral power of 2 is outside the range of int, the results are unspecified. Otherwise, the frexp functions return the value x, - such that x has a magnitude in the interval [1/2, 1) or zero, and value equals x x 2*exp . + such that x has a magnitude in the interval [1/2, 1) or zero, and value equals x 2*exp. If value is zero, both parts of the result are zero. @@ -13039,7 +13030,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. range error may occur.
Returns
3 - The ldexp functions return x x 2exp . + The ldexp functions return x 2exp.
- 1 <= x x FLT_RADIX-logb(x) < FLT_RADIX + 1 <= x FLT_RADIX-logb(x) < FLT_RADIXA domain error or pole error may occur if the argument is zero.
Returns @@ -13182,11 +13173,11 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
Description
2 - The scalbn and scalbln functions compute x x FLT_RADIXn efficiently, not - normally by computing FLT_RADIXn explicitly. A range error may occur. + The scalbn and scalbln functions compute x FLT_RADIXn efficiently, not + normally by computing FLT_RADIXn explicitly. A range error may occur.
Returns
3 - The scalbn and scalbln functions return x x FLT_RADIXn . + The scalbn and scalbln functions return x FLT_RADIXn.
Returns
3 - The cbrt functions return x1/3 . + The cbrt functions return x1/3.
Contents @@ -13243,11 +13234,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
Returns
4 - The hypot functions return (sqrt)x2 + y2 . -
- - - ----- -+ The hypot functions return (sqrt)(x2 + y2).
Returns
3 - The pow functions return xy . + The pow functions return xy.
Returns
3 - The sqrt functions return (sqrt)x. -
- - - - -+ The sqrt functions return (sqrt)(x).
Returns
3 + The erf functions return
- 2 x - (integral) e-t dt. - 2 -- The erf functions return erf x = -
- (sqrt)pi - - - - 0 + 2 x + erf x = --- (integral) e-t2 dt . + (sqrt)(pi) 0-
Returns
3 + The erfc functions return
- 2 (inf) - (integral) e-t dt. - 2 + 2 (inf) + erfc x = 1 - erf x = --- (integral) e-t2 dt . + (sqrt)(pi) x- The erfc functions return erfc x = 1 - erf x = -
- (sqrt)pi - - - - x --
2 The remquo functions compute the same remainder as the remainder functions. In the object pointed to by quo they store a value whose sign is the sign of x/y and whose - magnitude is congruent modulo 2n to the magnitude of the integral quotient of x/y, where + magnitude is congruent modulo 2n to the magnitude of the integral quotient of x/y, where n is an implementation-defined integer greater than or equal to 3.
Returns
3 @@ -13745,7 +13716,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
2 The fdim functions determine the positive difference between their arguments:
- {x - y if x > y + {x - y if x > y { {+0 if x <= y@@ -13817,12 +13788,12 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
Description
2 - The fma functions compute (x x y) + z, rounded as one ternary operation: they compute + The fma functions compute (x y) + z, rounded as one ternary operation: they compute the value (as if) to infinite precision and round once to the result format, according to the current rounding mode. A range error may occur.
Returns
3 - The fma functions return (x x y) + z, rounded as one ternary operation. + The fma functions return (x y) + z, rounded as one ternary operation. @@ -14129,13 +14100,13 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. expand to positive integer constant expressions with type int and distinct values that are the signal numbers, each corresponding to the specified condition:
- SIGABRT abnormal termination, such as is initiated by the abort function - SIGFPE an erroneous arithmetic operation, such as zero divide or an operation - resulting in overflow - SIGILL detection of an invalid function image, such as an invalid instruction - SIGINT receipt of an interactive attention signal - SIGSEGV an invalid access to storage - SIGTERM a termination request sent to the program + SIGABRT abnormal termination, such as is initiated by the abort function + SIGFPE an erroneous arithmetic operation, such as zero divide or an operation + resulting in overflow + SIGILL detection of an invalid function image, such as an invalid instruction + SIGINT receipt of an interactive attention signal + SIGSEGV an invalid access to storage + SIGTERM a termination request sent to the program
4 An implementation need not generate any of these signals, except as a result of explicit @@ -14516,13 +14487,13 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
atomic_flag- which is a structure type representing a lock-free, primitive atomic flag; and several * + which is a structure type representing a lock-free, primitive atomic flag; and several atomic analogs of integer types.
5 In the following synopses:
+ // Thread 2: r2 = atomic_load_explicit(&x, memory_order_relaxed); atomic_store_explicit(&y, 42, memory_order_relaxed);is allowed to produce r1 == 42 && r2 == 42. The sequence of evaluations justifying this consists of:
- atomic_store_explicit(&y, 42, memory_order_relaxed); - r1 = atomic_load_explicit(&y, memory_order_relaxed); - atomic_store_explicit(&x, r1, memory_order_relaxed); - r2 = atomic_load_explicit(&x, memory_order_relaxed); + atomic_store_explicit(&y, 42, memory_order_relaxed); + r1 = atomic_load_explicit(&y, memory_order_relaxed); + atomic_store_explicit(&x, r1, memory_order_relaxed); + r2 = atomic_load_explicit(&x, memory_order_relaxed);On the other hand,
// Thread 1: r1 = atomic_load_explicit(&y, memory_order_relaxed); atomic_store_explicit(&x, r1, memory_order_relaxed); -- -
+ // Thread 2: r2 = atomic_load_explicit(&x, memory_order_relaxed); atomic_store_explicit(&y, r2, memory_order_relaxed); @@ -14735,9 +14702,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. r1 = atomic_load_explicit(&x, memory_order_relaxed); if (r1 == 42) atomic_store_explicit(&y, r1, memory_order_relaxed); -- -
+ // Thread 2: r2 = atomic_load_explicit(&y, memory_order_relaxed); if (r2 == 42) @@ -14871,7 +14836,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.Description
2 The atomic_is_lock_free generic function indicates whether or not the object - pointed to by obj is lock-free. * + pointed to by obj is lock-free.
Returns
3 The atomic_is_lock_free generic function returns nonzero (true) if and only if the @@ -14890,47 +14855,48 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
- Atomic type name Direct type - atomic_bool _Atomic _Bool - atomic_char _Atomic char - atomic_schar _Atomic signed char - atomic_uchar _Atomic unsigned char - atomic_short _Atomic short - atomic_ushort _Atomic unsigned short - atomic_int _Atomic int - atomic_uint _Atomic unsigned int - atomic_long _Atomic long - atomic_ulong _Atomic unsigned long - atomic_llong _Atomic long long - atomic_ullong _Atomic unsigned long long - atomic_char16_t _Atomic char16_t - atomic_char32_t _Atomic char32_t - atomic_wchar_t _Atomic wchar_t - atomic_int_least8_t _Atomic int_least8_t - atomic_uint_least8_t _Atomic uint_least8_t - atomic_int_least16_t _Atomic int_least16_t - atomic_uint_least16_t _Atomic uint_least16_t - atomic_int_least32_t _Atomic int_least32_t - atomic_uint_least32_t _Atomic uint_least32_t - atomic_int_least64_t _Atomic int_least64_t - atomic_uint_least64_t _Atomic uint_least64_t - atomic_int_fast8_t _Atomic int_fast8_t - atomic_uint_fast8_t _Atomic uint_fast8_t - atomic_int_fast16_t _Atomic int_fast16_t - atomic_uint_fast16_t _Atomic uint_fast16_t - atomic_int_fast32_t _Atomic int_fast32_t - atomic_uint_fast32_t _Atomic uint_fast32_t - atomic_int_fast64_t _Atomic int_fast64_t - atomic_uint_fast64_t _Atomic uint_fast64_t - atomic_intptr_t _Atomic intptr_t - atomic_uintptr_t _Atomic uintptr_t - atomic_size_t _Atomic size_t - atomic_ptrdiff_t _Atomic ptrdiff_t - atomic_intmax_t _Atomic intmax_t - atomic_uintmax_t _Atomic uintmax_t + Atomic type name Direct type + + atomic_bool _Atomic _Bool + atomic_char _Atomic char + atomic_schar _Atomic signed char + atomic_uchar _Atomic unsigned char + atomic_short _Atomic short + atomic_ushort _Atomic unsigned short + atomic_int _Atomic int + atomic_uint _Atomic unsigned int + atomic_long _Atomic long + atomic_ulong _Atomic unsigned long + atomic_llong _Atomic long long + atomic_ullong _Atomic unsigned long long + atomic_char16_t _Atomic char16_t + atomic_char32_t _Atomic char32_t + atomic_wchar_t _Atomic wchar_t + atomic_int_least8_t _Atomic int_least8_t + atomic_uint_least8_t _Atomic uint_least8_t + atomic_int_least16_t _Atomic int_least16_t + atomic_uint_least16_t _Atomic uint_least16_t + atomic_int_least32_t _Atomic int_least32_t + atomic_uint_least32_t _Atomic uint_least32_t + atomic_int_least64_t _Atomic int_least64_t + atomic_uint_least64_t _Atomic uint_least64_t + atomic_int_fast8_t _Atomic int_fast8_t + atomic_uint_fast8_t _Atomic uint_fast8_t + atomic_int_fast16_t _Atomic int_fast16_t + atomic_uint_fast16_t _Atomic uint_fast16_t + atomic_int_fast32_t _Atomic int_fast32_t + atomic_uint_fast32_t _Atomic uint_fast32_t + atomic_int_fast64_t _Atomic int_fast64_t + atomic_uint_fast64_t _Atomic uint_fast64_t + atomic_intptr_t _Atomic intptr_t + atomic_uintptr_t _Atomic uintptr_t + atomic_size_t _Atomic size_t + atomic_ptrdiff_t _Atomic ptrdiff_t + atomic_intmax_t _Atomic intmax_t + atomic_uintmax_t _Atomic uintmax_t2 - The semantics of the operations on these types are defined in 7.17.7. * + The semantics of the operations on these types are defined in 7.17.7.
3 NOTE The representation of atomic integer types need not have the same size as their corresponding @@ -15074,21 +15040,23 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
7.17.7.5 The atomic_fetch and modify generic functions
1 The following operations perform arithmetic and bitwise computations. All of these - operations are applicable to an object of any atomic integer type. None of these * + operations are applicable to an object of any atomic integer type. None of these operations is applicable to atomic_bool. The key, operator, and computation correspondence is: - key op computation - add + addition - sub - subtraction - or | bitwise inclusive or - xor ^ bitwise exclusive or - and & bitwise and +
key | op | computation + |
---|---|---|
add | + | addition + |
sub | - | subtraction + |
or | | | bitwise inclusive or + |
xor | ^ | bitwise exclusive or + |
and | & | bitwise and + |
Synopsis
#include <stdatomic.h> - C atomic_fetch_key(volatile A *object, M operand); - C atomic_fetch_key_explicit(volatile A *object, + C atomic_fetch_key(volatile A *object, M operand); + C atomic_fetch_key_explicit(volatile A *object, M operand, memory_order order);
Description @@ -15320,11 +15288,11 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
1 - The typedef name intN_t designates a signed integer type with width N , no padding + The typedef name intN_t designates a signed integer type with width N , no padding bits, and a two's complement representation. Thus, int8_t denotes such a signed integer type with a width of exactly 8 bits.
2 - The typedef name uintN_t designates an unsigned integer type with width N and no + The typedef name uintN_t designates an unsigned integer type with width N and no padding bits. Thus, uint24_t denotes such an unsigned integer type with a width of exactly 24 bits.
3 @@ -15335,11 +15303,11 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
1 - The typedef name int_leastN_t designates a signed integer type with a width of at + The typedef name int_leastN_t designates a signed integer type with a width of at least N , such that no signed integer type with lesser size has at least the specified width. Thus, int_least32_t denotes a signed integer type with a width of at least 32 bits.
2 - The typedef name uint_leastN_t designates an unsigned integer type with a width + The typedef name uint_leastN_t designates an unsigned integer type with a width of at least N , such that no unsigned integer type with lesser size has at least the specified width. Thus, uint_least16_t denotes an unsigned integer type with a width of at least 16 bits. @@ -15359,8 +15327,8 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. Each of the following types designates an integer type that is usually fastest262) to operate with among all integer types that have at least the specified width.
2 - The typedef name int_fastN_t designates the fastest signed integer type with a width - of at least N . The typedef name uint_fastN_t designates the fastest unsigned integer + The typedef name int_fastN_t designates the fastest signed integer type with a width + of at least N . The typedef name uint_fastN_t designates the fastest unsigned integer type with a width of at least N . @@ -15436,14 +15404,16 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
- INTN_MIN exactly -(2 N -1 ) + INTN_MIN exactly -(2N-1)
- INTN_MAX exactly 2 N -1 - 1 + INTN_MAX exactly 2N-1 - 1
+ UINTN_MAX exactly 2N - 1 +
Contents @@ -15452,14 +15422,16 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
- INT_LEASTN_MIN -(2 N -1 - 1) + INT_LEASTN_MIN -(2N-1 - 1)
- INT_LEASTN_MAX 2 N -1 - 1 + INT_LEASTN_MAX 2N-1 - 1
+ UINT_LEASTN_MAX 2N - 1 +
Contents @@ -15468,12 +15440,16 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
- INT_FASTN_MIN -(2 N -1 - 1) + INT_FASTN_MIN -(2N-1 - 1)
+ INT_FASTN_MAX 2N-1 - 1 +
+ UINT_FASTN_MAX 2N - 1 +
Contents @@ -15482,25 +15458,35 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
- INTPTR_MIN -(215 - 1) + INTPTR_MIN -(215 - 1)
+ INTPTR_MAX 215 - 1 +
+ UINTPTR_MAX 216 - 1 +
+ INTMAX_MIN -(263 - 1) +
+ INTMAX_MAX 263 - 1 +
+ UINTMAX_MAX 264 - 1 +
Contents @@ -15518,24 +15504,30 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. actually provides.263)
PTRDIFF_MIN -65535 PTRDIFF_MAX +65535 +
SIG_ATOMIC_MIN see below SIG_ATOMIC_MAX see below +
+ SIZE_MAX 65535 +
WCHAR_MIN see below WCHAR_MAX see below +
+ WINT_MIN see below + WINT_MAX see below +
3 If sig_atomic_t (see 7.14) is defined as a signed integer type, the value of @@ -15579,9 +15571,9 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
1 - The macro INTN_C(value) shall expand to an integer constant expression - corresponding to the type int_leastN_t. The macro UINTN_C(value) shall expand - to an integer constant expression corresponding to the type uint_leastN_t. For + The macro INTN_C(value) shall expand to an integer constant expression + corresponding to the type int_leastN_t. The macro UINTN_C(value) shall expand + to an integer constant expression corresponding to the type uint_leastN_t. For example, if uint_least64_t is a name for the type unsigned long long int, then UINT64_C(0x123) might expand to the integer constant 0x123ULL. @@ -15856,9 +15848,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
7 At program startup, three text streams are predefined and need not be opened explicitly -
3 The argument mode points to a string. If the string is one of the following, the file is open in the indicated mode. Otherwise, the behavior is undefined.271) - r open text file for reading - w truncate to zero length or create text file for writing - wx create text file for writing - a append; open or create text file for writing at end-of-file - rb open binary file for reading - wb truncate to zero length or create binary file for writing - - +
4 Opening a file with read mode ('r' as the first character in the mode argument) fails if the file does not exist or cannot be read. @@ -16321,22 +16311,16 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. precision were omitted.
6 The flag characters and their meanings are: - - The result of the conversion is left-justified within the field. (It is right-justified if -
+
+
+
+
+
conversions, if a precision is specified, the 0 flag is ignored. For other conversions, the behavior is undefined. -+
7 The length modifiers and their meanings are: - hh Specifies that a following d, i, o, u, x, or X conversion specifier applies to a -
+
+
+
+
+
+
ptrdiff_t or the corresponding unsigned integer type argument; or that a following n conversion specifier applies to a pointer to a ptrdiff_t argument. -- L Specifies that a following a, A, e, E, f, F, g, or G conversion specifier -
+
8 The conversion specifiers and their meanings are: - d,i The int argument is converted to signed decimal in the style [-]dddd. The -
+
+
+
+
6; if the precision is zero and the # flag is not specified, no decimal-point character appears. The value is rounded to the appropriate number of digits. The E conversion specifier produces a number with E instead of e @@ -16468,24 +16422,22 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. value is zero, the exponent is zero. A double argument representing an infinity or NaN is converted in the style of an f or F conversion specifier. -- g,G A double argument representing a floating-point number is converted in -
+
+
distinguish279) values of type double, except that trailing zeros may be omitted; if the precision is zero and the # flag is not specified, no decimal- point character appears. The letters abcdef are used for a conversion and @@ -16509,18 +16455,14 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. decimal exponent of 2. If the value is zero, the exponent is zero. A double argument representing an infinity or NaN is converted in the style of an f or F conversion specifier. -- c If no l length modifier is present, the int argument is converted to an -
+
+
the precision, the function would need to access a wide character one past the end of the array. In no case is a partial multibyte character written.281) -- p The argument shall be a pointer to void. The value of the pointer is -
+
+
+
9 If a conversion specification is invalid, the behavior is undefined.282) If any argument is not the correct type for the corresponding conversion specification, the behavior is @@ -16614,31 +16547,31 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
17 EXAMPLE 2 In this example, multibyte characters do not have a state-dependent encoding, and the members of the extended character set that consist of more than one byte each consist of exactly two bytes, - the first of which is denoted here by a and the second by an uppercase letter. + the first of which is denoted here by a # and the second by an uppercase letter.
18 Given the following wide string with length seven,
- static wchar_t wstr[] = L" X Yabc Z W"; + static wchar_t wstr[] = L"#X#Yabc#Z#W";the seven calls
- fprintf(stdout, "|1234567890123|\n"); - fprintf(stdout, "|%13ls|\n", wstr); - fprintf(stdout, "|%-13.9ls|\n", wstr); - fprintf(stdout, "|%13.10ls|\n", wstr); - fprintf(stdout, "|%13.11ls|\n", wstr); - fprintf(stdout, "|%13.15ls|\n", &wstr[2]); - fprintf(stdout, "|%13lc|\n", (wint_t) wstr[5]); + fprintf(stdout, "|1234567890123|\n"); + fprintf(stdout, "|%13ls|\n", wstr); + fprintf(stdout, "|%-13.9ls|\n", wstr); + fprintf(stdout, "|%13.10ls|\n", wstr); + fprintf(stdout, "|%13.11ls|\n", wstr); + fprintf(stdout, "|%13.15ls|\n", &wstr[2]); + fprintf(stdout, "|%13lc|\n", (wint_t) wstr[5]);will print the following seven lines:
|1234567890123| - | X Yabc Z W| - | X Yabc Z | - | X Yabc Z| - | X Yabc Z W| - | abc Z W| - | Z| + | #X#Yabc#Z#W| + |#X#Yabc#Z | + | #X#Yabc#Z| + | #X#Yabc#Z#W| + | abc#Z#W| + | #Z|
Forward references: conversion state (7.29.6), the wcrtomb function (7.29.6.3.3). @@ -16744,91 +16677,62 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. in the object, the behavior is undefined.
11 The length modifiers and their meanings are: - hh Specifies that a following d, i, o, u, x, X, or n conversion specifier applies -
+
+
+
+
+
+
+
+
12 The conversion specifiers and their meanings are: - d Matches an optionally signed decimal integer, whose format is the same as -
+
+
+
+
+
format is the same as expected for the subject sequence of the strtod function. The corresponding argument shall be a pointer to floating. -- c Matches a sequence of characters of exactly the number specified by the field -
+
+
+
before the first multibyte character is converted. The corresponding argument shall be a pointer to the initial element of an array of wchar_t large enough to accept the sequence and the terminating null wide character, which will be @@ -16886,29 +16783,23 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. specification. If a - character is in the scanlist and is not the first, nor the second where the first character is a ^, nor the last character, the behavior is implementation-defined. -- p Matches an implementation-defined set of sequences, which should be the -
+
+
+
13 If a conversion specification is invalid, the behavior is undefined.287)
14 @@ -17010,7 +16901,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. #include <stdio.h> /* ... */ int n, i; - n = sscanf("foo % bar 42", "foo%%bar%d", &i); + n = sscanf("foo % bar 42", "foo%%bar%d", &i); will assign to n the value 1 and to i the value 42 because input white-space characters are skipped for both the % and d conversion specifiers. @@ -17018,8 +16909,8 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
23 EXAMPLE 6 In these examples, multibyte characters do have a state-dependent encoding, and the members of the extended character set that consist of more than one byte each consist of exactly two bytes, - the first of which is denoted here by a and the second by an uppercase letter, but are only recognized as - such when in the alternate shift state. The shift sequences are denoted by (uparrow) and (downarrow), in which the first causes + the first of which is denoted here by a # and the second by an uppercase letter, but are only recognized as + such when in the alternate shift state. The shift sequences are denoted by ^ and $, in which the first causes entry into the alternate shift state.
24 After the call: @@ -17031,9 +16922,9 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. with the input line:
- a(uparrow) X Y(downarrow) bc + a^#X#Y$ bc- str will contain (uparrow) X Y(downarrow)\0 assuming that none of the bytes of the shift sequences (or of the multibyte + str will contain ^#X#Y$\0 assuming that none of the bytes of the shift sequences (or of the multibyte characters, in the more general case) appears to be a single-byte white-space character.
25 In contrast, after the call: @@ -17045,7 +16936,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. wchar_t wstr[50]; fscanf(stdin, "a%ls", wstr); - with the same input line, wstr will contain the two wide characters that correspond to X and Y and a + with the same input line, wstr will contain the two wide characters that correspond to #X and #Y and a terminating null wide character.
26 However, the call: @@ -17054,19 +16945,19 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. #include <stddef.h> /* ... */ wchar_t wstr[50]; - fscanf(stdin, "a(uparrow) X(downarrow)%ls", wstr); + fscanf(stdin, "a^#X$%ls", wstr); - with the same input line will return zero due to a matching failure against the (downarrow) sequence in the format + with the same input line will return zero due to a matching failure against the $ sequence in the format string.
27 - Assuming that the first byte of the multibyte character X is the same as the first byte of the multibyte - character Y, after the call: + Assuming that the first byte of the multibyte character #X is the same as the first byte of the multibyte + character #Y, after the call:
#include <stdio.h> #include <stddef.h> /* ... */ wchar_t wstr[50]; - fscanf(stdin, "a(uparrow) Y(downarrow)%ls", wstr); + fscanf(stdin, "a^#Y$%ls", wstr);with the same input line, zero will again be returned, but stdin will be left with a partially consumed multibyte character. @@ -19550,6 +19441,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
<math.h> <complex.h> type-generic function function macro + acos cacos acos asin casin asin atan catan atan @@ -19614,6 +19506,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.macro use invokes + exp(n) exp(n), the function acosh(f) acoshf(f) sin(d) sin(d), the function @@ -19932,10 +19825,12 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.2 The mtx_init function creates a mutex object with properties indicated by type, which must have one of the six values: - mtx_plain for a simple non-recursive mutex, - mtx_timed for a non-recursive mutex that supports timeout, * - mtx_plain | mtx_recursive for a simple recursive mutex, or - mtx_timed | mtx_recursive for a recursive mutex that supports timeout. +
3 If the mtx_init function succeeds, it sets the mutex pointed to by mtx to a value that uniquely identifies the newly created mutex. @@ -19959,7 +19854,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. on the same mutex shall synchronize with this operation.
Returns
3 - The mtx_lock function returns thrd_success on success, or thrd_error if the * + The mtx_lock function returns thrd_success on success, or thrd_error if the request could not be honored.
Contents @@ -19994,7 +19889,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
Description
2 - The mtx_trylock function endeavors to lock the mutex pointed to by mtx. If the * + The mtx_trylock function endeavors to lock the mutex pointed to by mtx. If the mutex is already locked, the function returns without blocking. If the operation succeeds, prior calls to mtx_unlock on the same mutex shall synchronize with this operation.
Returns @@ -20254,7 +20149,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
Returns
3 The tss_set function returns thrd_success on success or thrd_error if the - request could not be honored. * + request could not be honored.
Contents @@ -20270,7 +20165,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. Saving Time, which is a temporary change in the algorithm for determining local time. The local time zone and Daylight Saving Time are implementation-defined.
2 - The macros defined are NULL (described in 7.19); * + The macros defined are NULL (described in 7.19);
CLOCKS_PER_SEC@@ -20524,23 +20419,18 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. Sun Sep 16 01:03:52 1973\n\0 using the equivalent of the following algorithm. - char *asctime(const struct tm *timeptr) - {
- static const char wday_name[7][3] = { - "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" - }; - static const char mon_name[12][3] = { - "Jan", "Feb", "Mar", "Apr", "May", "Jun", - "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" - }; - static char result[26]; -- - - + char *asctime(const struct tm *timeptr) + { + static const char wday_name[7][3] = { + "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" + }; + static const char mon_name[12][3] = { + "Jan", "Feb", "Mar", "Apr", "May", "Jun", + "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" + }; + static char result[26]; -
sprintf(result, "%.3s %.3s%3d %.2d:%.2d:%.2d %d\n", wday_name[timeptr->tm_wday], mon_name[timeptr->tm_mon], @@ -20548,8 +20438,8 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. timeptr->tm_min, timeptr->tm_sec, 1900 + timeptr->tm_year); return result; + }- }
3 If any of the members of the broken-down time contain values that are outside their normal ranges,323) the behavior of the asctime function is undefined. Likewise, if the @@ -20652,151 +20542,101 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. of the current locale and by the values of zero or more members of the broken-down time structure pointed to by timeptr, as specified in brackets in the description. If any of the specified values is outside the normal range, the characters stored are unspecified. - %a is replaced by the locale's abbreviated weekday name. [tm_wday] - %A is replaced by the locale's full weekday name. [tm_wday] - %b is replaced by the locale's abbreviated month name. [tm_mon] - %B is replaced by the locale's full month name. [tm_mon] - %c is replaced by the locale's appropriate date and time representation. [all specified -
+
+
+
+
+
+
+
+
+
+
(01-53). [tm_year, tm_wday, tm_yday] -- %w is replaced by the weekday as a decimal number (0-6), where Sunday is 0. -
+
+
+
+
+
4 Some conversion specifiers can be modified by the inclusion of an E or O modifier character to indicate an alternative format or specification. If the alternative format or specification does not exist for the current locale, the modifier is ignored. - %Ec is replaced by the locale's alternative date and time representation. - %EC is replaced by the name of the base year (period) in the locale's alternative -
+
+
+
+
+
+
representation, where Monday is 1. -- %OU is replaced by the week number, using the locale's alternative numeric symbols. - %OV is replaced by the ISO 8601 week number, using the locale's alternative numeric -
+
+
+
+
5 %g, %G, and %V give values according to the ISO 8601 week-based year. In this system, weeks begin on a Monday and week 1 of the year is the week that includes January 4th, @@ -20812,16 +20652,18 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
7 In the "C" locale, the E and O modifiers are ignored and the replacement strings for the following specifiers are: - %a the first three characters of %A. - %A one of ''Sunday'', ''Monday'', ... , ''Saturday''. - %b the first three characters of %B. - %B one of ''January'', ''February'', ... , ''December''. - %c equivalent to ''%a %b %e %T %Y''. - %p one of ''AM'' or ''PM''. - %r equivalent to ''%I:%M:%S %p''. - %x equivalent to ''%m/%d/%y''. - %X equivalent to %T. - %Z implementation-defined. +
Returns
8 If the total number of resulting characters including the terminating null character is not @@ -20892,30 +20734,22 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
4 The mbrtoc16 function returns the first of the following that applies (given the current conversion state): - 0 if the next n or fewer bytes complete the multibyte character that -
+
+
+
+
+
Footnotes
324) When n has at least the value of the MB_CUR_MAX macro, this case can only occur if s points at a @@ -20985,31 +20819,23 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
4 The mbrtoc32 function returns the first of the following that applies (given the current conversion state): - 0 if the next n or fewer bytes complete the multibyte character that -
+
character (which is the value stored); the value returned is the number of bytes that complete the multibyte character. -- (size_t)(-3) if the next character resulting from a previous call has been stored (no -
+
+
+
Footnotes
325) When n has at least the value of the MB_CUR_MAX macro, this case can only occur if s points at a @@ -21193,29 +21019,17 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. precision were omitted.
6 The flag wide characters and their meanings are: - - The result of the conversion is left-justified within the field. (It is right-justified if -
+
+
specified.)331) -- space If the first wide character of a signed conversion is not a sign, or if a signed -
+
+
+
7 The length modifiers and their meanings are: - hh Specifies that a following d, i, o, u, x, or X conversion specifier applies to a -
+
+
+
following c conversion specifier applies to a wint_t argument; that a following s conversion specifier applies to a pointer to a wchar_t argument; or has no effect on a following a, A, e, E, f, F, g, or G conversion specifier. -- ll (ell-ell) Specifies that a following d, i, o, u, x, or X conversion specifier applies to a -
+
+
+
+
+
8 The conversion specifiers and their meanings are: - d,i The int argument is converted to signed decimal in the style [-]dddd. The -
+
decimal (u), or unsigned hexadecimal notation (x or X) in the style dddd; the letters abcdef are used for x conversion and the letters ABCDEF for X conversion. The precision specifies the minimum number of digits to appear; if the value being converted can be represented in fewer digits, it is expanded with leading zeros. The default precision is 1. The result of converting a zero value with a precision of zero is no wide characters. -- f,F A double argument representing a floating-point number is converted to -
+
+
+
fractional portion of the result and the decimal-point wide character is removed if there is no fractional portion remaining. A double argument representing an infinity or NaN is converted in the style of an f or F conversion specifier. -- a,A A double argument representing a floating-point number is converted in the -
+
+
+
terminating null wide character. If the precision is specified, no more than that many wide characters are written. If the precision is not specified or is greater than the size of the converted array, the converted array shall contain a @@ -21410,23 +21184,17 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. precision is specified, no more than that many wide characters are written. If the precision is not specified or is greater than the size of the array, the array shall contain a null wide character. -- p The argument shall be a pointer to void. The value of the pointer is -
+
+
+
9 If a conversion specification is invalid, the behavior is undefined.335) If any argument is not the correct type for the corresponding conversion specification, the behavior is @@ -21583,90 +21351,60 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. represented in the object, the behavior is undefined.
11 The length modifiers and their meanings are: - hh Specifies that a following d, i, o, u, x, X, or n conversion specifier applies -
+
+
+
+
+
+
+
+
12 The conversion specifiers and their meanings are: - d Matches an optionally signed decimal integer, whose format is the same as -
+
+
+
+
+
+
+
+
+
+
+
+
13 If a conversion specification is invalid, the behavior is undefined.339)
14 @@ -23201,26 +22930,20 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
4 The mbrtowc function returns the first of the following that applies (given the current conversion state): - 0 if the next n or fewer bytes complete the multibyte character that -
+
+
+
+
- auto * if unsigned + auto if unsigned break inline void case int volatile char long while @@ -24008,15 +23731,15 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.(6.4.2.1) nondigit: one of
- _ a b c d e f g h i j k l m - n o p q r s t u v w x y z - A B C D E F G H I J K L M - N O P Q R S T U V W X Y Z + _ a b c d e f g h i j k l m + n o p q r s t u v w x y z + A B C D E F G H I J K L M + N O P Q R S T U V W X Y Z(6.4.2.1) digit: one of
- 0 1 2 3 4 5 6 7 8 9 + 0 1 2 3 4 5 6 7 8 9
Contents @@ -25308,7 +25031,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. ATOMIC_FLAG_INIT atomic_int_least16_t memory_order atomic_uint_least16_t atomic_flag atomic_int_least32_t - memory_order_relaxed * atomic_uint_least32_t + memory_order_relaxed atomic_uint_least32_t memory_order_consume atomic_int_least64_t memory_order_acquire atomic_uint_least64_t memory_order_release atomic_int_fast8_t @@ -25724,7 +25447,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
thread_local once_flag - ONCE_FLAG_INIT mtx_plain * + ONCE_FLAG_INIT mtx_plain TSS_DTOR_ITERATIONS mtx_recursive cnd_t mtx_timed thrd_t thrd_timedout @@ -26626,51 +26349,33 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.F.9.2 Expression transformations
1 - x/2 <-> x x 0.5 Although similar transformations involving inexact constants -
+
x/2 <-> x * 0.5 | Although similar transformations involving inexact constants
generally do not yield numerically equivalent expressions, if the
constants are exact then such transformations can be made on
IEC 60559 machines and others that round perfectly.
-
- 1 x x and x/1 -> x The expressions 1 x x, x/1, and x are equivalent (on IEC 60559
-+ |
- 1/(1/ (+-) (inf)) is (+-) (inf) + 1/(1/(+-)(inf)) is (+-)(inf)and @@ -26695,17 +26400,17 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
1 - x != x -> false The expression x != x is true if x is a NaN. - x = x -> true The expression x = x is false if x is a NaN. - x < y -> isless(x,y) (and similarly for <=, >, >=) Though numerically equal, these -
+
x != x -> false | The expression x != x is true if x is a NaN. + |
x == x -> true | The expression x = x is false if x is a NaN. + |
x < y -> isless(x,y)(and similarly for <=, >, >=) | Though numerically equal, these expressions are not equivalent because of side effects when x or y is a NaN and the state of the FENV_ACCESS pragma is ''on''. This transformation, which would be desirable if extra code were required to cause the ''invalid'' floating-point exception for unordered cases, could be performed provided the state of the FENV_ACCESS pragma is ''off''. - + |
2 @@ -27644,39 +27349,21 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
2 If the operands are not both complex, then the result and floating-point exception behavior of the * operator is defined by the usual mathematical formula: -
- * u iv u + iv -- -
- x xu i(xv) (xu) + i(xv) -- -
- iy i(yu) -yv (-yv) + i(yu) -- -
- x + iy (xu) + i(yu) (-yv) + i(xv) -+
* | u | iv | u + iv + |
x | xu | i(xv) | (xu) + i(xv) + |
iy | i(yu) | -yv | (-yv) + i(yu) + |
x + iy | (xu) + i(yu) | (-yv) + i(xv) | + |
3 If the second operand is not complex, then the result and floating-point exception behavior of the / operator is defined by the usual mathematical formula: -
- / u iv -- -
- x x/u i(-x/v) -- -
- iy i(y/u) y/v -- -
- x + iy (x/u) + i(y/u) (y/v) + i(-x/v) -+
/ | u | iv + |
x | x/u | i(-x/v) + |
iy | i(y/u) | y/v + |
x + iy | (x/u) + i(y/u) | (y/v) + i(-x/v) + |
4 The * and / operators satisfy the following infinity properties for all real, imaginary, and complex operands:377) @@ -27826,21 +27513,12 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
2 In all cases the result and floating-point exception behavior of a + or - operator is defined by the usual mathematical formula: -
- + or - u iv u + iv -- -
- x x(+-)u x (+-) iv (x (+-) u) (+-) iv -- -
- iy (+-)u + iy i(y (+-) v) (+-)u + i(y (+-) v) -- -
- x + iy (x (+-) u) + iy x + i(y (+-) v) (x (+-) u) + i(y (+-) v) -+
+ or - | u | iv | u + iv + |
x | x(+-)u | x (+-) iv | (x (+-) u) (+-) iv + |
iy | (+-)u + iy | i(y (+-) v) | (+-)u + i(y (+-) v) + |
x + iy | (x (+-) u) + iy | x + i(y (+-) v) | (x (+-) u) + i(y (+-) v) + |
2 The parameters for the integer data types can be accessed by the following: - maxint INT_MAX, LONG_MAX, LLONG_MAX, UINT_MAX, ULONG_MAX,
+ maxint INT_MAX, LONG_MAX, LLONG_MAX, UINT_MAX, ULONG_MAX, ULLONG_MAX -minint INT_MIN, LONG_MIN, LLONG_MIN +
3 The parameter ''bounded'' is always true, and is not provided. The parameter ''minint'' is always 0 for the unsigned types, and is not provided for those types. @@ -28257,6 +27935,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
1 The integer operations on integer types are the following: +
addI x + y subI x - y mulI x * y @@ -28270,6 +27949,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. leqI x <= y gtrI x > y geqI x >= y +where x and y are expressions of the same integer type.
Contents @@ -28286,22 +27966,26 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
1 The parameters for a floating point data type can be accessed by the following: +
r FLT_RADIX p FLT_MANT_DIG, DBL_MANT_DIG, LDBL_MANT_DIG emax FLT_MAX_EXP, DBL_MAX_EXP, LDBL_MAX_EXP emin FLT_MIN_EXP, DBL_MIN_EXP, LDBL_MIN_EXP +
2 The derived constants for the floating point types are accessed by the following: +
fmax FLT_MAX, DBL_MAX, LDBL_MAX fminN FLT_MIN, DBL_MIN, LDBL_MIN epsilon FLT_EPSILON, DBL_EPSILON, LDBL_EPSILON rnd_style FLT_ROUNDS - +
1 The floating-point operations on floating-point types are the following: +
addF x + y subF x - y mulF x * y @@ -28310,9 +27994,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. absF fabsf(x), fabs(x), fabsl(x) exponentF 1.f+logbf(x), 1.0+logb(x), 1.L+logbl(x) scaleF scalbnf(x, n), scalbn(x, n), scalbnl(x, n), -where x and y are expressions of the same floating point type, n is of type int, and li is of type long int. @@ -28331,10 +28014,12 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. that only one identifier for each is provided to map to LIA-1.scalblnf(x, li), scalbln(x, li), scalblnl(x, li) -intpartF modff(x, &y), modf(x, &y), modfl(x, &y) fractpartF modff(x, &y), modf(x, &y), modfl(x, &y) eqF x == y @@ -28321,6 +28003,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. leqF x <= y gtrF x > y geqF x >= y +
2 The FLT_ROUNDS parameter can be used to indicate the LIA-1 rounding styles: +
truncate FLT_ROUNDS == 0 nearest FLT_ROUNDS == 1 other FLT_ROUNDS != 0 && FLT_ROUNDS != 1 +provided that an implementation extends FLT_ROUNDS to cover the rounding style used in all relevant LIA-1 operations, not just addition as in C. @@ -28342,18 +28027,16 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
1 The LIA-1 type conversions are the following type casts: - cvtI' -> I (int)i, (long int)i, (long long int)i,
+ cvtI' -> I (int)i, (long int)i, (long long int)i, (unsigned int)i, (unsigned long int)i, (unsigned long long int)i -cvtF -> I (int)x, (long int)x, (long long int)x, -
(unsigned int)x, (unsigned long int)x, (unsigned long long int)x -cvtI -> F (float)i, (double)i, (long double)i cvtF' -> F (float)x, (double)x, (long double)x +
2 In the above conversions from floating to integer, the use of (cast)x can be replaced with (cast)round(x), (cast)rint(x), (cast)nearbyint(x), (cast)trunc(x), @@ -28413,15 +28096,19 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. C's <fenv.h> status flags are compatible with the LIA-1 indicators.
2 The following mapping is for floating-point types: +
undefined FE_INVALID, FE_DIVBYZERO floating_overflow FE_OVERFLOW underflow FE_UNDERFLOW +
3 The floating-point indicator interrogation and manipulation operations are: +
set_indicators feraiseexcept(i) clear_indicators feclearexcept(i) test_indicators fetestexcept(i) current_indicators fetestexcept(FE_ALL_EXCEPT) +where i is an expression of type int representing a subset of the LIA-1 indicators.
4 C allows an implementation to provide the following LIA-1 required behavior: at @@ -29991,42 +29678,28 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''.
5 The mode string shall be as described for fopen, with the addition that modes starting with the character 'w' or 'a' may be preceded by the character 'u', see below: - uw truncate to zero length or create text file for writing, default -
+
+
+
+
+
+
+
+
6 Opening a file with exclusive mode ('x' as the last character in the mode argument) fails if the file already exists or cannot be created. @@ -34826,7 +34499,7 @@ margin: deleted text is marked with ''*'', new or changed text with '' ''. wscanf_s function, K.3.9.1.12, K.3.9.1.14 xor macro, 7.9 - xor_eq macro, 7.9 * + xor_eq macro, 7.9