求助,在三目运算符中进行计算并且强制转换成 char 类型仍然会会输出 int 类型的数字,比如如下代码:
//#pragma GCC optimize(3)
#include<bits/stdc++.h>
using namespace std;
template< typename T > inline void read(T &x)
{
char c=getchar();x=0;int f=0;
for(;!isdigit(c);c=getchar()) f|=(c=='-');
for(;isdigit(c);c=getchar()) x=((x<<3)+(x<<1)+(c^48));
x=f?-x:x;
}
int n,m;
int a[100010],num;
int main()
{
read(n);
read(m);
cout<<n<<'=';
while(n!=0)
{
int k=n%m;
if(k<0)
{
k-=m;
n+=m;
}
num++;
a[num]=k;
n/=m;
}
for(int i=num;i>=1;i--)
{
cout<<(a[i]>=10?(char)(a[i]-10+65):a[i]);//这一句
}
printf("(base%d)",m);
return 0;
}
但是如果这样写就可以照常输出了:
//#pragma GCC optimize(3)
#include<bits/stdc++.h>
using namespace std;
template< typename T > inline void read(T &x)
{
char c=getchar();x=0;int f=0;
for(;!isdigit(c);c=getchar()) f|=(c=='-');
for(;isdigit(c);c=getchar()) x=((x<<3)+(x<<1)+(c^48));
x=f?-x:x;
}
int n,m;
int a[100010],num;
int main()
{
read(n);
read(m);
cout<<n<<'=';
while(n!=0)
{
int k=n%m;
if(k<0)
{
k-=m;
n+=m;
}
num++;
a[num]=k;
n/=m;
}
for(int i=num;i>=1;i--)
{
if(a[i]>=10)//改成if
{
cout<<(char((char)a[i]-(char)10+'A'));
}
else
{
cout<<a[i];
}
}
printf("(base%d)",m);
return 0;
}
请问是否有方法在三目运算符中强制转换类型并且输出 char 类型?