Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

machine's basic character set

In C++ primer book, in the primitive built-in types section is says:

A char is guaranteed to be big enough to hold numeric values corresponding to the characters in the machine's basic character set. That is, a char is the same size as a single machine byte.

Is this basic character refering to the ASCII table?

like image 255
power_output Avatar asked Dec 11 '25 02:12

power_output


1 Answers

The standard does not guarantee that the basic character set shall be ASCII. And in fact other character sets have existed and still exist on specific systems such as EBCDIC.

The only guarantees are

1.7 The C++ memory model [intro.memory]
1 The fundamental storage unit in the C++ memory model is the byte. A byte is at least large enough to contain any member of the basic execution character set (2.3) and the eight-bit code units of the Unicode UTF-8 encoding form and is composed of a contiguous sequence of bits, the number of which is implementationdefined. The least significant bit is called the low-order bit; the most significant bit is called the high-order bit. The memory available to a C++ program consists of one or more sequences of contiguous bytes. Every byte has a unique address.

1.8 The C++ object model [intro.object]
...
5 Unless it is a bit-field (9.6), a most derived object shall have a non-zero size and shall occupy one or more bytes of storage.

2.3 Character sets [lex.charset]
...the value of each character after 0 in the above list of decimal digits shall be one greater than the value of the previous.

So the C++ standard guarantees that a char has at least 8 bits and that the digit codes have consecutive values. All other character set properties are implementation dependant.

like image 70
Serge Ballesta Avatar answered Dec 13 '25 15:12

Serge Ballesta



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!