嗯,不是随意的,因为它每次都一样,但是
#include<iostream>
using namespace std;
int main()
{
char box[10][10];
for(int i=-1;i<11;i++)
{
cout<<"---------------------"<<endl<<"|";
for(int j=0;j<10;j++)
{
cout<<box[j][i]<<"|";
}
cout<<endl;
}
intx;cin>>x;
return 0;
}
输出一系列国际角色(好吧,并非所有这些角色都是'国际'本身,但我得到像pi和西班牙语倒置问号的东西)。无论如何,我知道这是因为尚未初始化的程序访问字符,但为什么特定值创建特定符号,符号的ASCII值是什么(如果它们具有ASCII值)以及如何在没有毛刺的情况下获得符号我的节目?
答案 0 :(得分:3)
你的循环我没有意义......
for(int i=-1;i<11;i++)
当你在这里引用框时,这将命中两个无效的索引,-1和10:
cout<<box[j][i]<<"|";
应该是0到&lt; 10喜欢另一个循环。
此外,您还没有将框的内容初始化为任何内容,因此您打印的是未初始化的内存。在你拿出任何东西之前,你必须把东西放进你的“盒子里”。
符号本身可能是扩展的ASCII,您可以通过任何扩展的ASCII表获取它们。 This one首先出现在Google上。例如,您可以这样做:
cout << "My extended ascii character is: " << (char)162 << endl;
获得一个疯狂的国际o。
答案 1 :(得分:2)
出于同样的原因
#include <iostream>
using namespace std;
int main()
{
int x;
cout << x;
}
显示随机值。未初始化的变量(或数组)包含垃圾。
答案 2 :(得分:0)
for(int i = -1; i&lt; 11; i ++)
这条线是可疑的。 -1到10?应该是0到9。
答案 3 :(得分:0)
ASCII码是
(int)(box[j][i])
您只需打印普通的char
,它们是ASCII字符,代码从0到255。
打印wchar_t
时,相同的内存被解释为其他字符。
你的循环应该在[0; 10 [不在[-1; 11 [
答案 4 :(得分:0)
程序显示的符号取决于:
Unicode引用可能是识别显示特定符号所需代码的最佳来源。
请考虑您的用户可能没有默认选择的相同编码(或带有正确符号的字体)。您应该检查当前的区域设置,或者强制输出特定的区域设置,以确保输出呈现您希望的方式。