c++ - 为什么这个程序会显示看似随机的字符? (C++)

标签 c++ special-characters

嗯,不是随机的,因为每次都一样,但是

#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 值)以及如何在不出现故障的情况下获取符号我的程序?

最佳答案

你的 i 循环没有意义......

for(int i=-1;i<11;i++)

当您在此处引用框时,这将命中两个无效的索引,-1 和 10:

cout<<box[j][i]<<"|";

它应该像其他循环一样是 0 到 < 10。

此外,您还没有将 box 的内容初始化为任何内容,因此您正在打印未初始化的内存。你必须先把东西放进你的“盒子”,然后才能取出任何东西。

符号本身可能是扩展的 ASCII,您可以通过任何扩展的 ASCII 表找到它们。 This one首先出现在谷歌上。例如,您可以这样做:

cout << "My extended ascii character is: " << (char)162 << endl;

获得一个疯狂的国际 o。

关于c++ - 为什么这个程序会显示看似随机的字符? (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/902309/

相关文章:

java - java中的正则表达式字符串

linux - 如何在 screen 模式下显示垂直选项卡?

Bash:处理带有特殊字符的文件

c++ - boost::dynamic_bitset 连接性能

c++ - C/C++ 多线程开源软件

c++ - 如何使用 boost::serialization 序列化 TAO::unbouded_basic_string_sequence<T>?

c++ - 整数和实数类型的不同模板行为

string - 最适合填充字符串的字符

c++ - 使用自定义比较函数在类中进行列表排序

java - 如何在java中替换 '{Name}'