控制台输出笑脸
console outputs smiley face
我有这个代码:
#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;
}
我想知道为什么我会得到一个笑脸而不是第一个数组元素!我在这里做错了什么?它编译和运行良好,但输出是
第一个数组元素:"笑脸"
这意味着什么?我正在使用Visual Studio 2010。感谢
您正在输出此数组中的第二个元素:
char arr[3] = {1,2,3};
您已经为它分配了值1、2和3,但该变量的类型是char,因此它被解释为ascii。如果你在ascii图表上查找值为2的字符,你会发现它是一个笑脸。所以它确实在做你要求它做的事情
http://mathbits.com/MathBits/CompSci/Introduction/ASCIIch.jpg
你期望输出是什么?如果您希望它是一个数字,那么您必须将该数字的字符表示添加到数组中。即使用'1'
、'2'
和'3'
来代替1
、2
或3
据我所见,您正在尝试输出第一个数组元素。但是,您正在打印第二个数组(数组的索引从0开始,而不是从1开始)。第二个元素是2。现在,请看一下这张表,你可以看到:数字2是一个笑脸。问题是,您输出的字符代码为2,而不是"2"。为了输出平分,让你的数组看起来像这样:
char arr[3] = {'1','2','3'};
inner_struct.arr被声明为char*,这意味着它包含一个字符数组(字节)。你想要一个数组来容纳数字1、2、3吗?如果是,请使用int。如果需要字母,请使用初始化数组
char arr[3] = { 'a', 'b', 'c' };
KC
相关文章:
- 递归函数计算序列中的平方和(并输出过程)
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 请解释"函数1(p1,p2,p3);"的输出
- C++:将控制台输出存储在宏中更好吗
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 为什么我的代码在输出中增加了93天
- 如何从void函数输出字符串
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- AES加密到解密未正确输出
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- 使用C++程序合并排序没有得到正确的输出
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- C++格式化输出问题
- 将值从二维数组输出到文本文件
- 为什么我有一个"="符号输出和 2 个笑脸而不是正确的输出?C++
- 这段代码输出什么笑脸
- 控制台输出笑脸
- win32c++:如何打印笑脸☻控制台输出流
- 输出C++USACO中出现意外的表情符号/笑脸