说说char!=signed char!=unsigned char吧

cxjddd 2003-06-11 12:35:45
由于前面有人说如何比较两种类型是不是一样的。受Modern C++ Design的影响(算是抄吧),写了出来,却由于找不到原来的帖子没有发表^_^
template <typename T, typename U>
struct SameType
{
static const bool isSame = false;
};

template <typename T>
struct SameType<T, T>
{
static const bool isSame = true;
};
  然后我就去测试了。当测试到string和basic_string <char>时,我试着把basic_string <char>换成basic_string <unsigned char>和signed char,居然发现,只有char是真!其它两个都是假!也就是说char既不与signed char一样,也不与unsigned char一样。
  但是,我记得是char和另外两个中的一种是一样的啊!于是我就从Dev-C++里换到BCC5.5里去测试,结果还是一样。(VC7搞不定命令行下的CL,就没有测了)
  然后,我去翻TCPL,终于知道是这样的:三种char类型不同,但char要么与signed char行为相同,要么与unsigned char行为相同。
...全文
42 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
redleaves 2003-06-11
  • 打赏
  • 举报
回复
的确不一样啊.
你那样不直观,我这样比直观点.
cout<<"char:"<<typeid(char).name()<<endl;
cout<<"unsigned char:"<<typeid(unsigned char).name()<<endl;
cout<<"signed char:"<<typeid(signed char).name()<<endl;

int就和char不一样,signed int通常等价于int.
yzb1000 2003-06-11
  • 打赏
  • 举报
回复
学习
redleaves 2003-06-11
  • 打赏
  • 举报
回复
TO cxjddd(战士编程):
呵呵,共同学习啊.刚才看帖子看到你的几个回复,很不错!
本来我想回的,看到你回的,我就觉得没什么可回的了,你都说了.^_^
cxjddd 2003-06-11
  • 打赏
  • 举报
回复
typeid没用过。学习了。

所有的整型中,只有char是有三种类型吧。其它的都只有两种。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧