C和C++中字符的大小是多少?据我所知,字符的大小在C和C++中都是1字节.

100

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

100

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

不出意外,它们都给出了输出:Size of char : 1

现在我们知道字符被表示为'a''b''c''|',...所以我只是修改了上面的代码:

In C:

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

100

Size of char : 1
Size of char : 4

In C++:

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

100

Size of char : 1
Size of char : 1

Why the 100 returns different values in C and C++?

推荐答案

在C中,像'a'这样的字符constant的类型实际上是int,大小为4(或其他一些依赖于实现的值).在C++中,类型为char,大小为1.这是两种语言之间的许多细微差异之一.

C++相关问答推荐

为什么静态说明符为内联函数生成外部定义?

修改pGM使用指针填充2-D数组但不起作用

将整数的.csv文件解析为C语言中的二维数组

ARM64 ASIMD固有的加载uint8_t* 到uint16x8(x3)?

如何在C中使printf不刷新标准输出?

为什么cudaFree不需要数据 struct 的地址?

加密解密工作正常,但返回错误0x80090005

getline()从c中的外部函数传递指针时输出null

S的这种管道实施有什么问题吗?

这个空指针类型的转换是有效代码还是恶意代码?

安全倒计时循环

OSDev--双缓冲重启系统

我可以创建适用于不同endian的 colored颜色 struct 吗?

GetText不适用于包含国际字符的帐户名称

表达式x&;&;(~x)应该返回1还是0?它依赖于编译器吗?

&stdbool.h&q;在嵌入式系统中的使用

Leet代码运行时错误:代码不会在Leet代码上编译,而是在其他编译器中编译,如netbeans和在线编译器

如何找出C中分配在堆上的数组的大小?

C 语言中霍尔分区的快速排序算法

使用复合文字数组初始化的指针数组