C++ 文字的大小(以字节为单位)

C++ 文字的大小(以字节为单位),c++,visual-c++,byte,literals,C++,Visual C++,Byte,Literals,我负责这个问题,老实说,我不知道如何找到这些字节的大小。有人能给我指出正确的方向吗?一种方法是使用sizeof操作符 比如说, What is the size (in bytes) for each of the literals '7', 7.0, “7”? #包括 #包括 int main(int argc,字符**argv) { std::cout为了教你如何钓鱼,而不是给你一条鱼,让我们将其分为两部分。首先,我们如何找到这些文本的类型,是解决这个问题的最佳方法: #include &

我负责这个问题,老实说,我不知道如何找到这些字节的大小。有人能给我指出正确的方向吗?

一种方法是使用sizeof操作符

比如说,

What is the size (in bytes) for each of the literals '7', 7.0, “7”?
#包括
#包括
int main(int argc,字符**argv)
{

std::cout为了教你如何钓鱼,而不是给你一条鱼,让我们将其分为两部分。首先,我们如何找到这些文本的类型,是解决这个问题的最佳方法:

#include <iostream>
#include <math.h>

int main(int argc, char **argv)
{
    std::cout << "size of char 6 is " << sizeof('6') << std::endl;
    std::cout << "size of float 6.0 is " << sizeof(6.0) << std::endl;
    std::cout << "size of string 6 is " << sizeof("6") << std::endl;

    return 0;
}   
visualstudio
中,您将直接获得类型()

如果我们必须这样做,我们将使用并看到:

c
d
A2_c
现在我们了解了类型,我们可以使用以下方法找到它们的大小:


迂腐地说,一般情况下,文字本身没有物理大小。将“字节大小”的概念应用于非“材料”的内容(即不驻留在内存中)毫无意义。这里唯一的例外是字符串文字
“7”
,这是一个左值。同时,
'7'
7.0
不是左值

无论如何,当您将
sizeof
应用于一个文本值(如果这是您所说的“字节大小”)时,该文本被解释为一个简单的表达式。您得到的是该表达式的类型大小。因此,
'7'
具有type
char
和size 1,
7.0
具有type
double
和size
sizeof(双精度)
(取决于实现),
“7”
具有类型
常量字符[2]
和大小2


(请注意,数组到指针的转换不应用于
sizeof
的直接操作数,这就是为什么
sizeof“7”
的计算结果是数组大小,而不是指针大小。)

要计算字节数,您需要确定每个字节的类型。列出了3种不同的类型。请注意,第二种类型可能会有所不同。浮动文字是双精度的,除非它们有后缀。
decltype
可能比
typeid
更好。此外,您也可以(显然知道)只需使用
sizeof
@Rapptz中的文字,它们是探索的工具,对于那些刚刚意识到这一点的人来说,仅仅说使用
sizeof
并没有给他们太多的帮助。当然,要真正理解它,最好转到标准部分
2.14文字
,并从那里开始。
c
d
A2_c
char
double
char [2]
#include <typeinfo>
#include <iostream>

int main()
{
    std::cout << sizeof( char)  << std::endl ;
    std::cout << sizeof( double )  << std::endl ;
    std::cout << sizeof( char [2] ) << std::endl ;
}   
1
8
2