f1 = f2 * d;
the multiplication may be executed using single-precision arithmetic if the implementation can ascertain
that the result would be the same as if it were executed using double-precision arithmetic (for example, if d
- were replaced by the constant <a href="#2.0">2.0</a>, which has type double).
+ were replaced by the constant 2.0, which has type double).
/* ... */
x = (x * y) * z; // not equivalent to x *= y * z;
z = (x - y) + y ; // not equivalent to z = x;
- z = x + x * y; // not equivalent to z = x * (<a href="#1.0">1.0</a> + y);
- y = x / <a href="#5.0">5.0</a>; // not equivalent to y = x * 0.2;
+ z = x + x * y; // not equivalent to z = x * (1.0 + y);
+ y = x / 5.0; // not equivalent to y = x * 0.2;
14 EXAMPLE 6 To illustrate the grouping behavior of expressions, in the following fragment
int a, b;
21) There is no linkage between different identifiers.
22) A function declaration can contain the storage-class specifier static only if it is at file scope; see
-<a name="6.7.1" href="#6.7.1"><b> 6.7.1.</b></a>
+ <a href="#6.7.1">6.7.1</a>.
[<a name="p30" href="#p30">page 30</a>] (<a href="#Contents">Contents</a>)
object (in which case it is an lvalue) or a function (in which case it is a function
designator).79)
3 A constant is a primary expression. Its type depends on its form and value, as detailed in
-<a name="6.4.4" href="#6.4.4"><b> 6.4.4.</b></a>
+ <a href="#6.4.4">6.4.4</a>.
4 A string literal is a primary expression. It is an lvalue with type as detailed in <a href="#6.4.5">6.4.5</a>.
5 A parenthesized expression is a primary expression. Its type and value are identical to
those of the unparenthesized expression. It is an lvalue, a function designator, or a void
extern creates an external definition. The following example shows an entire translation unit.
inline double fahr(double t)
{
- return (<a href="#9.0">9.0</a> * t) / <a href="#5.0">5.0</a> + 32.0;
+ return (9.0 * t) / 5.0 + 32.0;
}
inline double cels(double t)
{
- return (<a href="#5.0">5.0</a> * (t - 32.0)) / <a href="#9.0">9.0</a>;
+ return (5.0 * (t - 32.0)) / 9.0;
}
extern double fahr(double); // creates an external definition
double convert(int is_fahr, double temp)
24 EXAMPLE 1 Provided that <a href="#7.3"><complex.h></a> has been #included, the declarations
int i = <a href="#3.5">3.5</a>;
double complex c = 5 + 3 * I;
- define and initialize i with the value 3 and c with the value <a href="#5.0">5.0</a> + i3.0.
+ define and initialize i with the value 3 and c with the value 5.0 + i3.0.
25 EXAMPLE 2 The declaration
int x[] = { 1, 3, 5 };
<a name="7.18.2" href="#7.18.2"><b> 7.18.2 Limits of specified-width integer types</b></a>
1 The following object-like macros226) specify the minimum and maximum limits of the
types declared in <a href="#7.18"><stdint.h></a>. Each macro name corresponds to a similar type name in
-<a name="7.18.1" href="#7.18.1"><b> 7.18.1.</b></a>
+ <a href="#7.18.1">7.18.1</a>.
2 Each instance of any defined macro shall be replaced by a constant expression suitable
for use in #if preprocessing directives, and this expression shall have the same type as
would an expression that is an object of the corresponding type converted according to
1 The following function-like macros230) expand to integer constants suitable for
initializing objects that have integer types corresponding to types defined in
<a href="#7.18"><stdint.h></a>. Each macro name corresponds to a similar type name in <a href="#7.18.1.2">7.18.1.2</a> or
-<a name="7.18.1.5" href="#7.18.1.5"><b> 7.18.1.5.</b></a>
+ <a href="#7.18.1.5">7.18.1.5</a>.
2 The argument in any instance of these macros shall be an unsuffixed integer constant (as
defined in <a href="#6.4.4.1">6.4.4.1</a>) with a value that does not exceed the limits for the corresponding type.
3 Each invocation of one of these macros shall expand to an integer constant expression
int day, hour, min;
fprintf(stdout, "%s, %s %d, %.2d:%.2d\n",
weekday, month, day, hour, min);
- fprintf(stdout, "pi = %.5f\n", 4 * atan(<a href="#1.0">1.0</a>));
+ fprintf(stdout, "pi = %.5f\n", 4 * atan(1.0));
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,
int day, hour, min;
fwprintf(stdout, L"%ls, %ls %d, %.2d:%.2d\n",
weekday, month, day, hour, min);
- fwprintf(stdout, L"pi = %.5f\n", 4 * atan(<a href="#1.0">1.0</a>));
+ fwprintf(stdout, L"pi = %.5f\n", 4 * atan(1.0));
Forward references: the btowc function (<a href="#7.24.6.1.1">7.24.6.1.1</a>), the mbrtowc function
(<a href="#7.24.6.3.2">7.24.6.3.2</a>).
conversion is subject to default rounding modes and raises no execution-time floating-point exceptions
(even where the state of the FENV_ACCESS pragma is ''on''). Library functions, for example
strtod, provide execution-time conversion of numeric strings.
- 315) Where the state for the FENV_ACCESS pragma is ''on'', results of inexact expressions like <a href="#1.0">1.0</a>/3.0
+ 315) Where the state for the FENV_ACCESS pragma is ''on'', results of inexact expressions like 1.0/3.0
are affected by rounding modes set at execution time, and expressions such as 0.0/0.0 and
- <a href="#1.0">1.0</a>/0.0 generate execution-time floating-point exceptions. The programmer can achieve the
+ 1.0/0.0 generate execution-time floating-point exceptions. The programmer can achieve the
efficiency of translation-time evaluation through static initialization, such as
- const static double one_third = <a href="#1.0">1.0</a>/3.0;
+ const static double one_third = 1.0/3.0;
[<a name="p449" href="#p449">page 449</a>] (<a href="#Contents">Contents</a>)
and others that round perfectly.
1 * x and x / 1 (->) x The expressions 1 * x, x / 1, and x are equivalent
(on IEC 60559 machines, among others).317)
- x / x (->) <a href="#1.0">1.0</a> The expressions x / x and <a href="#1.0">1.0</a> are not equivalent if x
+ x / x (->) 1.0 The expressions x / x and 1.0 are not equivalent if x
can be zero, infinite, or NaN.
x - y (<->) x + (-y) The expressions x - y, x + (-y), and (-y) + x
are equivalent (on IEC 60559 machines, among others).
int recalc = 0;
if ( isinf(a) || isinf(b) ) { // z is infinite
/* "Box" the infinity and change NaNs in the other factor to 0 */
- a = copysign(isinf(a) ? <a href="#1.0">1.0</a> : 0.0, a);
- b = copysign(isinf(b) ? <a href="#1.0">1.0</a> : 0.0, b);
+ a = copysign(isinf(a) ? 1.0 : 0.0, a);
+ b = copysign(isinf(b) ? 1.0 : 0.0, b);
if (isnan(c)) c = copysign(0.0, c);
if (isnan(d)) d = copysign(0.0, d);
recalc = 1;
}
if ( isinf(c) || isinf(d) ) { // w is infinite
/* "Box" the infinity and change NaNs in the other factor to 0 */
- c = copysign(isinf(c) ? <a href="#1.0">1.0</a> : 0.0, c);
- d = copysign(isinf(d) ? <a href="#1.0">1.0</a> : 0.0, d);
+ c = copysign(isinf(c) ? 1.0 : 0.0, c);
+ d = copysign(isinf(d) ? 1.0 : 0.0, d);
if (isnan(a)) a = copysign(0.0, a);
if (isnan(b)) b = copysign(0.0, b);
recalc = 1;
}
else if ((isinf(a) || isinf(b)) &&
isfinite(c) && isfinite(d)) {
- a = copysign(isinf(a) ? <a href="#1.0">1.0</a> : 0.0, a);
- b = copysign(isinf(b) ? <a href="#1.0">1.0</a> : 0.0, b);
+ a = copysign(isinf(a) ? 1.0 : 0.0, a);
+ b = copysign(isinf(b) ? 1.0 : 0.0, b);
x = INFINITY * ( a * c + b * d );
y = INFINITY * ( b * c - a * d );
}
else if (isinf(logbw) &&
isfinite(a) && isfinite(b)) {
- c = copysign(isinf(c) ? <a href="#1.0">1.0</a> : 0.0, c);
- d = copysign(isinf(d) ? <a href="#1.0">1.0</a> : 0.0, d);
+ c = copysign(isinf(c) ? 1.0 : 0.0, c);
+ d = copysign(isinf(d) ? 1.0 : 0.0, d);
x = 0.0 * ( a * c + b * d );
y = 0.0 * ( b * c - a * d );
divF x / y
negF -x
absF fabsf(x), fabs(x), fabsl(x)
- exponentF 1.f+logbf(x), <a href="#1.0">1.0</a>+logb(x), 1.L+logbl(x)
+ exponentF 1.f+logbf(x), 1.0+logb(x), 1.L+logbl(x)
scaleF scalbnf(x, n), scalbn(x, n), scalbnl(x, n),
scalblnf(x, li), scalbln(x, li), scalblnl(x, li)
intpartF modff(x, &y), modf(x, &y), modfl(x, &y)