Konstanty typu Integer jazyka C++
Celočíselné konstanty jsou konstantní datové prvky, které nemají žádné zlomkové části nebo exponenty.Vždy začínají číslicí.Celočíselné konstanty je možné zadat v podobě desítkové, osmičkové nebo šestnáctkové.Je možné určit typy se znaménkem nebo bez znaménka, dlouhé nebo krátké.
Gramatika
integer-constant:
decimal-constant integer-suffixoptoctal-constant integer-suffixopt
hexadecimal-constant integer-suffixopt
'c-char-sequence'
decimal-constant:
nonzero-digitdecimal-constant digit
octal-constant:
0octal-constant octal-digit
hexadecimal-constant:
0xhexadecimal-digit0Xhexadecimal-digit
hexadecimal-constant hexadecimal-digit
nonzero-digit: one of
1 2 3 4 5 6 7 8 9octal-digit: one of
0 1 2 3 4 5 6 7hexadecimal-digit: one of
0 1 2 3 4 5 6 7 8 9a b c d e f
A B C D E F
integer-suffix:
unsigned-suffix long-suffixoptlong-suffix unsigned-suffixopt
unsigned-suffix: one of
u Ulong-suffix: one of
l L64-bit integer-suffix:
i64 LL ll
Pro zadání celočíselné konstanty pomocí osmičkové nebo šestnáctkové soustavy je nutné použít předponu, která označuje základ.Pro určení celočíselné konstanty daného celočíselného typu je nutné použít příponu, která označuje typ.
Pro zadání desítkové konstanty je nutné začít specifikaci nenulovou číslicí.Příklad:
int i = 157; // Decimal constant
int j = 0198; // Not a decimal number; erroneous octal constant
int k = 0365; // Leading zero specifies octal constant, not decimal
Pro zadání osmičkové konstanty je třeba začít specifikaci s 0, následovanou posloupností číslic v rozsahu 0 až 7.Číslice 8 a 9 jsou chyby v určení osmičkové konstanty.Příklad:
int i = 0377; // Octal constant
int j = 0397; // Error: 9 is not an octal digit
Pro zadání šestnáctkové konstanty je nutné začít specifikaci s 0x nebo 0X (na velikosti "x" nezáleží), následované posloupností číslic v rozsahu 0 až 9 a a (nebo A) až f (nebo F).Šestnáctkové číslice a (nebo A) až f (nebo F) představují hodnoty v rozsahu 10 až 15.Příklad:
int i = 0x3fff; // Hexadecimal constant
int j = 0X3FFF; // Equal to i
Pro určení typu bez znaménka je nutné použít příponu u nebo U.Pro určení dlouhého typu je nutné použít příponu l nebo L.Příklad:
unsigned uVal = 328u; // Unsigned value
long lVal = 0x7FFFFFL; // Long value specified
// as hex constant
unsigned long ulVal = 0776745ul; // Unsigned long value
Pro určení 64bitového celočíselného typu je nutné použít příponu LL, ll nebo i64. Příklad:
// 64bitsuffix.cpp
#include <stdio.h>
enum MyEnum {
IntType,
Int64Type
};
MyEnum f1(int) {
printf("in f1(int)\n");
return IntType;
}
MyEnum f1(__int64) {
printf_s("in f1(__int64)\n");
return Int64Type;
}
int main() {
MyEnum t1 = f1(0x1234), t2 = f1(0x1234i64);
}
Výsledek
in f1(int)
in f1(__int64)