gpt4 book ai didi

c++ - 为什么要打印 ascii 范围之外的数字?

转载 作者:行者123 更新时间:2023-11-28 03:02:45 24 4
gpt4 key购买 nike

这是我的代码,它将数字作为输入并显示输出的字符

#include <iostream>
#include <stdio.h>
using namespace std;
int A[1000];

int main()
{

int ln=0,min = 99999999;
while(!cin.eof())
{
A[ln]=0;
for(int i=0;i<3;++i)
{
int x;
cin>>x;
A[ln]+=x;
}
if(A[ln]<=min)
min = A[ln];
++ln;
}

char buffer[2049];
for(int j=0;j<ln-1;++j)
{
int x = A[j] - 250;
cout<<x<<endl;
if(x<32)
cout<<x<<" here goes non-printable ascii"<<endl;
if(x>127)
cout<<x<<"here goes non-printable ascii"<<endl;
buffer[j] = x;
}

buffer[ln-1] = 0;
printf("%s\n",buffer);
}

现在可打印的 Ascii 值在 32 到 127 之间。但是,当我给程序输入 296 294 255 268 313 278 311 270 290 305 322 252 276 286 301 305 264 301 251 269 274 311 时我有以下输出,

595
595here goes non-printable ascii
609
609here goes non-printable ascii
621
621here goes non-printable ascii
629
629here goes non-printable ascii
613
613here goes non-printable ascii
620
620here goes non-printable ascii
544
544here goes non-printable ascii
Samuel

但最后它打印了“Samuel” 那么,问题是什么??

最佳答案

因为当您对 char 进行类型转换时,只存储最低有效字节,595 的最低有效字节是 1010011,这是 ASCII 83

关于c++ - 为什么要打印 ascii 范围之外的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20345817/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com