+公理


私のメモ

1.1.1


Unicode文字の8進表現に割り当てられた変数を持つデータ型Charger 16 Chart、Chary 32 Chart、またはWcharRank tは、10進数表現でcharを使用しているときに10進数に変換されます。



#include <iostream>

int main()
{
    // The following are Octal representation of 
    // a unicode character M.
    char16_t d1 = '\115';
    char32_t d2 = '\115';
    wchar_t d3 = '\115';
    char d4 = '\115'

    std::cout << d1 << " is the \x4d greatest number of all" << std::endl;
    // d1, d2, d3 are converted to decimal, hence shows 77 
    // in the output but d4 will be converted to character M. 

    return 0;
}

1.1.2


16進数(16進数の短い)表現は、A、B、C、D、E、Fを使用して9の後の数字を表現します。例えば、16進数の4 Dは10進数で77に相当し、Dは13、4×16 + 13 = 77である。



#include <iostream>

int main()
{
    char16_t yo = '\x4d'; 
    // char16_t type converts to hex int with std::cout per 1.1.1
    std::cout << yo << " is the greatest number of all " << std::endl;
    // 77 is the greatest number of all
    return 0;
}
注意:A B C D E Fが使われていなかったので、\x4(13)が長さが長いので、そして、ブラケットなしで、それはより大きい数に変わるでしょう.

1.1.3


そして、それから出力は25187です


ASCII code for 'abc' is '61-62-63' hex. Without the dash, '616263' in hex is 6382179 in dec. The largest integer value allowed for char16_t is 2^16. Hence, 6382179 % 2^16 = 25187


Q :上記は一般化できますか?すなわち、整数に割り当てられているcharp 16 t tからの変換プロセスは、16進数の各文字のASCIIコードであり、10進数に変換され、そのデータ型で許される最大値の剰余を見つける.

1.1.4


出力は7です



source

1.1.5


その出力は1890です


'\a' is 7 in ASCII code and 'b' is 98 in ASCII code in decimal which 62 in hexadecimal. Hence 762 when joined represents 7*16^2+6*16+2 = 1890


データ型Charger 16 Chart、char32 32 t、またはWcharRank tは、それぞれの型のサイズを指定した文字列リテラルに割り当てられた変数の16進表現の10進値の剰余を出力します。



#include <iostream>

int main()
{

    char16_t a = 'abc'; 
    // outputs 25187
    // '616263' hex -> 6382179 in dec -> 6382179 % 2^16 = 25187

    char32_t b = '\ab'; 
    // outputs 1890
    // \ is octal -> 

    char32_t c = 'abcabc';  // 1667326563


    wchar_t d = 'abcabc';   // 1667326563
    long e = 123123123123123;  // 123123123123123

    std::cout << a << "\n" << b << "\n"  << c << "\n" << d << "\n" << e << std::endl;
    return 0;
}