使用cout将数组和字符打印到屏幕时出现意外结果 作为C++学习的初学者,我试图理解一个类型 char < />代码数组和类型 int 之间的区别。这是我的密码: void IntArray () { int array[5] = {5,6,7,8,9}; cout << "Print int array: " << array << endl; cout << "Print int array[0]: " << array[0] << endl; cout << "Print int array[0]+1: " << array[0]+1 << endl; } void CharArray () { char array[5] = {'a', 'b', 'c', 'd', '\0'}; cout << "Print char array: " << array << endl; cout << "Print char array[0]: " << array[0] << endl; cout << "Print char array[0]+1: " << array[0]+1 << endl; }

使用cout将数组和字符打印到屏幕时出现意外结果 作为C++学习的初学者,我试图理解一个类型 char < />代码数组和类型 int 之间的区别。这是我的密码: void IntArray () { int array[5] = {5,6,7,8,9}; cout << "Print int array: " << array << endl; cout << "Print int array[0]: " << array[0] << endl; cout << "Print int array[0]+1: " << array[0]+1 << endl; } void CharArray () { char array[5] = {'a', 'b', 'c', 'd', '\0'}; cout << "Print char array: " << array << endl; cout << "Print char array[0]: " << array[0] << endl; cout << "Print char array[0]+1: " << array[0]+1 << endl; },c++,arrays,string,char,C++,Arrays,String,Char,我的问题是: 为什么以下输出字符串“0xbfd66a88”?我希望它返回数组中第一个元素的地址: cout << "Print char array: " << array << endl; cout 1。 因为当您将char数组流式传输到cout时,它们与其他数组的处理方式不同。 因为当您将char数组流式传输到cout时,它们与其他数组的处理方式不同。 因为当您将char数组流式传输到cout时,它们与其他数组的处理方式不同。 因为当您将char数组流式

我的问题是:

  • 为什么以下输出字符串“0xbfd66a88”?我希望它返回数组中第一个元素的地址:

    cout << "Print char array: " << array << endl;
    
    cout 1。
    因为当您将
    char
    数组流式传输到
    cout
    时,它们与其他数组的处理方式不同。 因为当您将
    char
    数组流式传输到
    cout
    时,它们与其他数组的处理方式不同。 因为当您将
    char
    数组流式传输到
    cout
    时,它们与其他数组的处理方式不同。
    因为当您将
    char
    数组流式传输到
    cout
    时,它们的处理方式与其他数组不同-
    好的,让我们分别检查每个数组

    Print int array: 0xbfd66a88
    

    这里您打印一个int[],它进入
    操作符好的,让我们分别检查一下

    Print int array: 0xbfd66a88
    

    这里您打印一个int[],它进入
    操作符好的,让我们分别检查一下

    Print int array: 0xbfd66a88
    

    这里您打印一个int[],它进入
    操作符好的,让我们分别检查一下

    Print int array: 0xbfd66a88
    


    这里你打印了一个int[],它进入了
    操作符,它不是我的。我收回了我的接近票…你看到的差异是因为
    std::ostream
    char
    重载与
    int
    不同。不是因为数组的行为有差异,不是我的。我收回了我的接近票…你看到的差异是因为
    std::ostream
    char
    重载与
    int
    不同。不是因为数组的行为有差异,不是我的。我收回了我的接近票…你看到的差异是因为
    std::ostream
    char
    重载与
    int
    不同。不是因为数组的行为有差异,不是我的。我收回了我的接近票…你看到的差异是因为
    std::ostream
    char
    重载与
    int
    不同。并不是因为数组行为之间存在差异。您对第2部分的解释不正确。当使用非重载的
    +
    运算符时,默认参数将在您所讨论的步骤之前应用。小于
    int
    的所有整数类型都将升级为
    int
    。例如,
    'A'+'B'
    也有类型
    int
    (而不是
    char
    )。@MattMcNabb你能澄清一下这与我写的内容有什么矛盾吗?你说既然
    char
    int
    不匹配,就要决定将两者转换为另一个。那不是真的;默认参数提升首先发生(无论是否存在不匹配)。如果您的逻辑正确,那么
    'A'+'B'
    将是
    char
    @mattmcnabb好的,谢谢。我对我的问题进行了编辑,以考虑您的评论,并指出
    int
    可能是
    有符号的
    无符号的
    。您对第2部分的解释不正确。当使用非重载的
    +
    运算符时,默认参数将在您所讨论的步骤之前应用。小于
    int
    的所有整数类型都将升级为
    int
    。例如,
    'A'+'B'
    也有类型
    int
    (而不是
    char
    )。@MattMcNabb你能澄清一下这与我写的内容有什么矛盾吗?你说既然
    char
    int
    不匹配,就要决定将两者转换为另一个。那不是真的;默认参数提升首先发生(无论是否存在不匹配)。如果您的逻辑正确,那么
    'A'+'B'
    将是
    char
    @mattmcnabb好的,谢谢。我对我的问题进行了编辑,以考虑您的评论,并指出
    int
    可能是
    有符号的
    无符号的
    。您对第2部分的解释不正确。当使用非重载的
    +
    运算符时,默认参数将在您所讨论的步骤之前应用。小于
    int
    的所有整数类型都将升级为
    int
    。例如,
    'A'+'B'
    也有类型
    int
    (而不是
    char
    )。@MattMcNabb你能澄清一下这与我写的内容有什么矛盾吗?你说既然
    char
    int
    不匹配,就要决定将两者转换为另一个。那不是真的;默认参数提升首先发生(无论是否存在不匹配)。如果您的逻辑正确,那么
    'A'+'B'
    将是
    char
    @mattmcnabb好的,谢谢。我对我的问题进行了编辑,以考虑您的评论,并指出
    int
    可能是
    有符号的
    无符号的
    。您对第2部分的解释不正确。当使用非重载的
    +
    运算符时,默认参数将在您所讨论的步骤之前应用。小于
    int
    的所有整数类型都将升级为
    int
    。例如,
    'A'+'B'
    也有类型
    int
    (而不是
    char
    )。@MattMcNabb你能澄清一下这与我写的内容有什么矛盾吗?你说既然
    char
    int
    不匹配,就要决定将两者转换为另一个。那不是真的;默认参数提升首先发生(无论是否存在不匹配)。如果您的逻辑正确,那么
    'A'+'B'
    将是
    char
    @mattmcnabb好的,谢谢。我对我的问题进行了编辑,以考虑您的评论,并指出
    Print int array[0]: 5
    
    Print int array[0]+1: 6
    
    Print char array: abcd
    
    Print char array[0]: a
    
    Print char array[0]+1: 98