为什么输出不了字符输出的是数字?
include<iostream>using namespace std;
int main()
{
int n,i,t,m;
char ch,f;
cin>>n>>ch>>t;
if(n>10)
cout<<"error"<<endl;
else
{
for(i=0;i<n;i++)
{ f=ch;
for(m=0;m<n;m++)
{
f+=t;
cout<<f<<" ";
}
cout<<endl;
}
}
return 0;
} 这段代码中,你在循环中对字符 f 进行增加操作 f+=t; 。 t 是一个整数,而 f 是一个字符。在 C++ 中,字符本质上就是较小的整数类型,因此你可以对它们进行数学运算。当你将一个整数加到字符上时,你实际上是改变了它的ASCII值。
cout<<f<<" "; 会打印 f 对应的字符,如果f的ASCII值在可打印字符范围内(32到126),那么它就会打印出对应的字符。如果f的ASCII值超出了这个范围,它就会打印出无法识别的字符或者看起来像数字的字符。
例如,如果输入的 ch 是'a',ASCII值为97, t 是10,那么第一次迭代后, f 的值就变成了107,对应的字符是'k'。在第二次迭代中, f 变为117,对应的字符是'u'。如果 f 继续增加到超过126,那么打印出来的字符就可能是无法识别的字符。
如果你想让代码打印出 f 的整数值,你可以使用 static_cast<int>(f) 将 f 转换为整数。修改后的代码如下:
include<iostream>
using namespace std;
int main()
{
int n,i,t,m;
char ch,f;
cin>>n>>ch>>t;
if(n>10)
cout<<"error"<<endl;
else
{
for(i=0;i<n;i++)
{
f=ch;
for(m=0;m<n;m++)
{
f+=t;
cout<<static_cast<int>(f)<<" ";
}
cout<<endl;
}
}
return 0;
}
在这个修改后的版本中,每次循环会打印 f 的ASCII值,而不是对应的字符。 还是不行{:10_266:}
5 A 2
67 69 71 73 75
67 69 71 73 75
67 69 71 73 75
67 69 71 73 75
67 69 71 73 75 (char)f f+=t,f是char,t是int。扩展了 static_cast<char>(f),不是int zhenjen 发表于 2023-6-5 13:07
static_cast(f),不是int
原来是这样谢谢谢谢
页:
[1]