(Constants): Small clarifications.
This commit is contained in:
parent
778ce9a752
commit
a441a65e8b
55
c.texi
55
c.texi
|
@ -3906,11 +3906,11 @@ exponent would be 3; together they stand for the value @math{0.75 * 2@sup{3}},
|
||||||
meaning 0.75 * 8. The value 1.5 would use 0.75 as the fraction and 1
|
meaning 0.75 * 8. The value 1.5 would use 0.75 as the fraction and 1
|
||||||
as the exponent. The value 0.75 would use 0.75 as the fraction and 0
|
as the exponent. The value 0.75 would use 0.75 as the fraction and 0
|
||||||
as the exponent. The value 0.375 would use 0.75 as the fraction and
|
as the exponent. The value 0.375 would use 0.75 as the fraction and
|
||||||
-1 as the exponent.
|
@minus{}1 as the exponent.
|
||||||
|
|
||||||
These binary exponents are used by machine instructions. You can
|
These binary exponents are used by machine instructions. You can
|
||||||
write a floating-point constant this way if you wish, using
|
write a floating-point constant this way if you wish, using
|
||||||
hexadecimal; but normally we write floating-point numbers in decimal.
|
hexadecimal; but normally we write floating-point numbers in decimal (base 10).
|
||||||
@xref{Floating Constants}.
|
@xref{Floating Constants}.
|
||||||
|
|
||||||
C has three floating-point data types:
|
C has three floating-point data types:
|
||||||
|
@ -4155,7 +4155,7 @@ constant cannot start with the character @samp{0} (zero) because
|
||||||
that makes the constant octal.
|
that makes the constant octal.
|
||||||
|
|
||||||
You can get the effect of a negative integer constant by putting a
|
You can get the effect of a negative integer constant by putting a
|
||||||
minus sign at the beginning. Grammatically speaking, that is an
|
minus sign at the beginning. In grammatical terms, that is an
|
||||||
arithmetic expression rather than a constant, but it behaves just like
|
arithmetic expression rather than a constant, but it behaves just like
|
||||||
a true constant.
|
a true constant.
|
||||||
|
|
||||||
|
@ -4192,6 +4192,7 @@ by bits (each represented by the characters @samp{0} or @samp{1}):
|
||||||
0b101 // @r{5}
|
0b101 // @r{5}
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
|
@noindent
|
||||||
Binary constants are a GNU C extension, not part of the C standard.
|
Binary constants are a GNU C extension, not part of the C standard.
|
||||||
|
|
||||||
Sometimes a space is needed after an integer constant to avoid
|
Sometimes a space is needed after an integer constant to avoid
|
||||||
|
@ -4235,8 +4236,8 @@ first four types (non-@code{long long}).
|
||||||
If the constant has @samp{u} or @samp{U} as a suffix, that excludes
|
If the constant has @samp{u} or @samp{U} as a suffix, that excludes
|
||||||
the signed types.
|
the signed types.
|
||||||
|
|
||||||
Otherwise, if the constant is decimal, that excludes the unsigned
|
Otherwise, if the constant is decimal (not binary, octal, or
|
||||||
types.
|
hexadecimal), that excludes the unsigned types.
|
||||||
@c ### This said @code{unsigned int} is excluded.
|
@c ### This said @code{unsigned int} is excluded.
|
||||||
@c ### See 17 April 2016
|
@c ### See 17 April 2016
|
||||||
|
|
||||||
|
@ -4314,7 +4315,7 @@ You can use exponents in hexadecimal floating constants, but since
|
||||||
@samp{e} would be interpreted as a hexadecimal digit, the character
|
@samp{e} would be interpreted as a hexadecimal digit, the character
|
||||||
@samp{p} or @samp{P} (for ``power'') indicates an exponent.
|
@samp{p} or @samp{P} (for ``power'') indicates an exponent.
|
||||||
|
|
||||||
The exponent in a hexadecimal floating constant is a possibly-signed
|
The exponent in a hexadecimal floating constant is an optionally signed
|
||||||
decimal integer that specifies a power of 2 (@emph{not} 10 or 16) to
|
decimal integer that specifies a power of 2 (@emph{not} 10 or 16) to
|
||||||
multiply into the number.
|
multiply into the number.
|
||||||
|
|
||||||
|
@ -4343,11 +4344,11 @@ Here are some examples:
|
||||||
@cindex complex constants
|
@cindex complex constants
|
||||||
@cindex constants, imaginary
|
@cindex constants, imaginary
|
||||||
|
|
||||||
A complex number consists of a real part plus an imaginary part.
|
A complex number consists of a real part plus an imaginary part. (You
|
||||||
(Either or both parts may be zero.) This section explains how to
|
may omit one part if it is zero.) This section explains how to write
|
||||||
write numeric constants with imaginary values. By adding these to
|
numeric constants with imaginary values. By adding these to ordinary
|
||||||
ordinary real-valued numeric constants, we can make constants with
|
real-valued numeric constants, we can make constants with complex
|
||||||
complex values.
|
values.
|
||||||
|
|
||||||
The simple way to write an imaginary-number constant is to attach the
|
The simple way to write an imaginary-number constant is to attach the
|
||||||
suffix @samp{i} or @samp{I}, or @samp{j} or @samp{J}, to an integer or
|
suffix @samp{i} or @samp{I}, or @samp{j} or @samp{J}, to an integer or
|
||||||
|
@ -4359,7 +4360,7 @@ The four alternative suffix letters are all equivalent.
|
||||||
The other way to write an imaginary constant is to multiply a real
|
The other way to write an imaginary constant is to multiply a real
|
||||||
constant by @code{_Complex_I}, which represents the imaginary number
|
constant by @code{_Complex_I}, which represents the imaginary number
|
||||||
i. Standard C doesn't support suffixing with @samp{i} or @samp{j}, so
|
i. Standard C doesn't support suffixing with @samp{i} or @samp{j}, so
|
||||||
this clunky way is needed.
|
this clunky method is needed.
|
||||||
|
|
||||||
To write a complex constant with a nonzero real part and a nonzero
|
To write a complex constant with a nonzero real part and a nonzero
|
||||||
imaginary part, write the two separately and add them, like this:
|
imaginary part, write the two separately and add them, like this:
|
||||||
|
@ -4396,7 +4397,7 @@ Sometimes we need to insert spaces to separate tokens so that they
|
||||||
won't be combined into a single number-like construct. For example,
|
won't be combined into a single number-like construct. For example,
|
||||||
@code{0xE+12} is a preprocessing number that is not a valid numeric
|
@code{0xE+12} is a preprocessing number that is not a valid numeric
|
||||||
constant, so it is a syntax error. If what we want is the three
|
constant, so it is a syntax error. If what we want is the three
|
||||||
tokens @code{@w{0xE + 12}}, we have to use those spaces as separators.
|
tokens @code{@w{0xE + 12}}, we have to insert two spaces as separators.
|
||||||
|
|
||||||
@node Character Constants
|
@node Character Constants
|
||||||
@section Character Constants
|
@section Character Constants
|
||||||
|
@ -4412,13 +4413,13 @@ For instance, @code{'a'} represents the character code for the letter
|
||||||
@samp{a}: 97, that is.
|
@samp{a}: 97, that is.
|
||||||
|
|
||||||
To put the @samp{'} character (single quote) in the character
|
To put the @samp{'} character (single quote) in the character
|
||||||
constant, @dfn{quote} it with a backslash (@samp{\}). This character
|
constant, @dfn{escape} it with a backslash (@samp{\}). This character
|
||||||
constant looks like @code{'\''}. This sort of sequence, starting with
|
constant looks like @code{'\''}. The backslash character here
|
||||||
@samp{\}, is called an @dfn{escape sequence}---the backslash character
|
functions as an @dfn{escape character}, and such a sequence,
|
||||||
here functions as a kind of @dfn{escape character}.
|
starting with @samp{\}, is called an @dfn{escape sequence}.
|
||||||
|
|
||||||
To put the @samp{\} character (backslash) in the character constant,
|
To put the @samp{\} character (backslash) in the character constant,
|
||||||
quote it likewise with @samp{\} (another backslash). This character
|
escape it with @samp{\} (another backslash). This character
|
||||||
constant looks like @code{'\\'}.
|
constant looks like @code{'\\'}.
|
||||||
|
|
||||||
@cindex bell character
|
@cindex bell character
|
||||||
|
@ -4451,12 +4452,15 @@ the corresponding ASCII character codes, as decimal numbers.
|
||||||
'\r' @result{} 13 /* @r{carriage return, @key{RET}, @kbd{CTRL-m}} */
|
'\r' @result{} 13 /* @r{carriage return, @key{RET}, @kbd{CTRL-m}} */
|
||||||
'\e' @result{} 27 /* @r{escape character, @key{ESC}, @kbd{CTRL-[}} */
|
'\e' @result{} 27 /* @r{escape character, @key{ESC}, @kbd{CTRL-[}} */
|
||||||
'\\' @result{} 92 /* @r{backslash character, @kbd{\}} */
|
'\\' @result{} 92 /* @r{backslash character, @kbd{\}} */
|
||||||
'\'' @result{} 39 /* @r{singlequote character, @kbd{'}} */
|
'\'' @result{} 39 /* @r{single quote character, @kbd{'}} */
|
||||||
'\"' @result{} 34 /* @r{doublequote character, @kbd{"}} */
|
'\"' @result{} 34 /* @r{double quote character, @kbd{"}} */
|
||||||
'\?' @result{} 63 /* @r{question mark, @kbd{?}} */
|
'\?' @result{} 63 /* @r{question mark, @kbd{?}} */
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
@samp{\e} is a GNU C extension; to stick to standard C, write @samp{\33}.
|
@samp{\e} is a GNU C extension; to stick to standard C, write
|
||||||
|
@samp{\33}. (The number after @samp{backslash} is octal.) To specify
|
||||||
|
a character constant using decimal, use a cast; for instance,
|
||||||
|
@code{(unsigned char) 27}.
|
||||||
|
|
||||||
You can also write octal and hex character codes as
|
You can also write octal and hex character codes as
|
||||||
@samp{\@var{octalcode}} or @samp{\x@var{hexcode}}. Decimal is not an
|
@samp{\@var{octalcode}} or @samp{\x@var{hexcode}}. Decimal is not an
|
||||||
|
@ -4482,8 +4486,9 @@ constants. In a string constant, @samp{'} does not need to be quoted.
|
||||||
A string constant defines an array of characters which contains the
|
A string constant defines an array of characters which contains the
|
||||||
specified characters followed by the null character (code 0). Using
|
specified characters followed by the null character (code 0). Using
|
||||||
the string constant is equivalent to using the name of an array with
|
the string constant is equivalent to using the name of an array with
|
||||||
those contents. In simple cases, the length in bytes of the string
|
those contents. In simple cases, where there are no backslash escape
|
||||||
constant is one greater than the number of characters written in it.
|
sequences, the length in bytes of the string constant is one greater
|
||||||
|
than the number of characters written in it.
|
||||||
|
|
||||||
As with any array in C, using the string constant in an expression
|
As with any array in C, using the string constant in an expression
|
||||||
converts the array to a pointer (@pxref{Pointers}) to the array's
|
converts the array to a pointer (@pxref{Pointers}) to the array's
|
||||||
|
@ -4735,8 +4740,8 @@ Consecutive wide string constants of the same kind concatenate, just
|
||||||
like ordinary string constants. A wide string constant concatenated
|
like ordinary string constants. A wide string constant concatenated
|
||||||
with an ordinary string constant results in a wide string constant.
|
with an ordinary string constant results in a wide string constant.
|
||||||
You can't concatenate two wide string constants of different kinds.
|
You can't concatenate two wide string constants of different kinds.
|
||||||
You also can't concatenate a wide string constant (of any kind) with a
|
In addition, you can't concatenate a wide string constant (of any
|
||||||
UTF-8 string constant.
|
kind) with a UTF-8 string constant.
|
||||||
|
|
||||||
@node Type Size
|
@node Type Size
|
||||||
@chapter Type Size
|
@chapter Type Size
|
||||||
|
|
Loading…
Reference in New Issue