C++ 控制台输出笑脸

C++ 控制台输出笑脸,c++,visual-studio-2010,C++,Visual Studio 2010,我有以下代码: #include "stdafx.h" #include <iostream> typedef struct{ int s1; int s2; char c1; char* arr; }inner_struc; int _tmain(int argc, _TCHAR* argv[]) { inner_struc myinner_struct; myinner_struct.s1 = myinner_struct.s

我有以下代码:

#include "stdafx.h"
#include <iostream>

typedef struct{
    int s1;
    int s2;
    char c1;
    char* arr;
}inner_struc;


int _tmain(int argc, _TCHAR* argv[])
{
    inner_struc myinner_struct;
    myinner_struct.s1 = myinner_struct.s2 = 3;
    myinner_struct.c1 = 'D';
    char arr[3] = {1,2,3};
    myinner_struct.arr = arr;

    std::cout << "first array element: " << myinner_struct.arr[1] << std::endl;
    return 0;
}
#包括“stdafx.h”
#包括
类型定义结构{
int s1;
int s2;
字符c1;
char*arr;
}内部结构;
int _tmain(int argc,_TCHAR*argv[]
{
内部结构我的内部结构;
myinner_struct.s1=myinner_struct.s2=3;
myinner_struct.c1='D';
char-arr[3]={1,2,3};
myinner_struct.arr=arr;

std::coutinternal_struct.arr声明为char*,这意味着它包含一个字符(字节)数组。是否希望数组包含数字1、2、3?如果是,请使用int。如果需要字母,请使用以下命令初始化数组:

  char arr[3] = { 'a', 'b', 'c' };

KC

internal_struct.arr声明为char*,这意味着它包含一个字符(字节)数组。是否希望数组包含数字1、2、3?如果是,请使用int。如果需要字母,请使用以下命令初始化数组:

  char arr[3] = { 'a', 'b', 'c' };

KC

您正在输出此数组中的第二个元素:

char arr[3] = {1,2,3};
您已为其指定了值1、2和3,但变量的类型为char,因此它被解释为ascii。如果您在ascii图表上查找哪个字符的值为2,您将看到它是一张笑脸。因此,它确实在执行您要求它执行的操作


您希望输出的是什么?如果您希望它是一个数字,那么您必须将该数字的字符表示形式添加到数组中。即,您正在输出此数组中的第二个元素,而不是
1
2
3

char arr[3] = {1,2,3};
您已为其指定了值1、2和3,但变量的类型为char,因此它被解释为ascii。如果您在ascii图表上查找哪个字符的值为2,您将看到它是一张笑脸。因此,它确实在执行您要求它执行的操作


您希望输出是什么?如果您希望它是一个数字,那么您必须将该数字的字符表示形式添加到数组中。例如,在我看来,您正在尝试输出fi,而不是
1
2
3
rst数组元素。但是,您正在打印第二个数组(数组的索引从0开始,而不是从1开始)。第二个元素是2。现在,请看一看,正如您所看到的:数字2是一张笑脸。问题是您正在输出一个代码为2的字符,而不是“2”。为了输出平分,请使数组如下所示:

char arr[3] = {'1','2','3'};

据我所见,您正在尝试输出第一个数组元素,但是您正在打印第二个数组元素(数组的索引从0开始,而不是从1开始)。第二个元素是2。现在,请看一看,正如您所看到的:数字2是一张笑脸。问题是您正在输出一个代码为2的字符,而不是“2”。为了输出平分,请使数组如下所示:

char arr[3] = {'1','2','3'};

char-arr[3]={1,2,3};
不是字符
'1'
'2'
'3'
,但不可打印
\0x01
0x02
\0x03
。此外,对字符串
char-arr[3]={1,2,3}使用
std::string
不是字符
'1'
'2'
'3'
,而是不可打印的
\0x01
0x02
\0x03
。此外,对字符串使用
std::string
不是ASCII图表而是代码页850图表。不是ASCII图表而是代码页850图表。不,在ASCII中,0x02是STX,它是不可打印的。在中,0x02是☻ 黑色笑脸。不,在ASCII中,0x02是STX,不可打印。在ASCII中,0x02是☻ 黑色的笑脸。