使用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数组流式
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