Размер символа в C/C++

Каков размер символа в C и C++? Насколько я знаю, что размер символа составляет 1 байт и в C и в C++.

В C:

#include 
int main()
{
    printf("Size of char : %d\n", sizeof(char));
    return 0;
}

В C++:

#include 
int main()
{
    std::cout << "Size of char : " << sizeof(char) << "\n";
    return 0;
}

Никакие неожиданности, они оба дают вывод: Size of char : 1

Теперь мы знаем, что символы представлены как 'a','b','c','|'... Таким образом, я просто изменил вышеупомянутые коды к ним:

В C:

#include 
int main()
{
    char a = 'a';
    printf("Size of char : %d\n", sizeof(a));
    printf("Size of char : %d\n", sizeof('a'));
    return 0;
}

Вывод:

Size of char : 1
Size of char : 4

В C++:

#include 
int main()
{
    char a = 'a';
    std::cout << "Size of char : " << sizeof(a) << "\n";
    std::cout << "Size of char : " << sizeof('a') << "\n";
    return 0;
}

Вывод:

Size of char : 1
Size of char : 1

Почему sizeof('a') возвращает различные значения в C и C++?

286
задан Ayxan 22 July 2019 в 23:06
поделиться

1 ответ

В C, тип символа , как , как «А» - это на самом деле INT , размером 4 (или некоторые другие зависимыми для реализации значение). В C ++ тип CHAR , размером 1. Это одно из многих небольших различий между двумя языками.

332
ответ дан 23 November 2019 в 01:50
поделиться