关于使用三目运算符输出char类型的问题
查看原帖
关于使用三目运算符输出char类型的问题
1039274
210101zhaosicheng楼主2024/9/15 10:02

求助,在三目运算符中进行计算并且强制转换成 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 类型?

2024/9/15 10:02
加载中...