C语言中的 char, unsigned char, signed char

一、他们是什么?

signed char是有符号的,但是unsigned char没有符号,两者在存储上没有任何区别都是8位。

区别在于如何理解这两个byte,假设一种场景我们要将其赋值给一个int。

如果是signed char由于高位为符号位,那么会对最高位进行扩展,但是对于unsinged char不会进行扩展。

至于char是有符号还是无符号,要取决于具体的编译器。

二、三者的类型无法进行自动转换

假设我们使用template定义了一个fill函数,对于字符串类型C语言已经有了现成的实现memset函数,这里我们想调用它,也就是对于字符串我们打算将其定义为一个特例来处理。

template <class T>

void fille(Iterator<T> *begin,Iterator<T> * end,T t){

....

}

void fill(char * begin,char * end,char t){

  memeset(begin,end-begin,t);

}

void fill(unsigned char * begin,unsigned char * end,char t){

  memeset(begin,end-begin,t);

}

void fill(signed char * begin,signed char * end,char t){

  memeset(begin,end-begin,t);

}

这里的问题是为什么要定义三个,关键是这里的这三个函数是普通的函数,我们无法使用模板的特性,对于这样的普通函数要适应多种参数类型,只能是类型的自动转换,但是这三种char都无法进行自动转换,所以需要每个都要定义一个。

参考资料:

[1] http://www.cnblogs.com/qytan36/archive/2010/09/27/1836569.html

[2] http://blog.csdn.net/zx824/article/details/6884352

最新文章

  1. iOS开发——项目篇—高仿百思不得姐 05——发布界面、发表文字界面、重识 bounds、frame、scrollView
  2. iOS 一个控件只能拥有一个父类
  3. [问题2014A13] 复旦高等代数 I(14级)每周一题(第十五教学周)
  4. Mysql时间函数
  5. 首先,定义描述学生的类——Student,包括学号(int)、 姓名(String)、年龄(int)等属性;二个方法:Student(int stuNo,String name,int age) 用于对对象的初始化,outPut()用于输出学生信息。其次,再定义一个主类—— TestClass,在主类的main方法中创建多个Student类的对象,使用这些对象来测 试Student类的功能。
  6. Ubuntu 14.10 下awk命令详解
  7. 阿里云centos增加swap(虚拟内存)
  8. GSM、3G、LTE、4G
  9. Slave延迟很大的优化方法总结(MySQL优化)
  10. Apache CXF 3.0: CDI 1.1 Support as Alternative to Spring--reference
  11. iOS push全方位解析(二)【译文】&quot;——生成OpenSSL证书,Provisioning Profile
  12. BootStrap 智能表单系列 七 验证的支持
  13. Windows Phone开发(15):资源
  14. form异步无刷新提交,提交后可以显示弹出框,否则弹出框会被刷新不见,使用 preventDefault
  15. linux的基本java环境搭建
  16. 基于FPGA的肤色识别算法实现
  17. [INet] WebSocket 协议中的数据收发过程
  18. Linux之prink原理
  19. WebKit最新特性srcset简介(转)
  20. 【IDEA】【6】Maven打包

热门文章

  1. ReactPHP── PHP版的Node.js(转)
  2. stark组件开发之提取公共视图函数
  3. JFinal Web开发学习(九)后台添加前台显示博客
  4. Task 和 ThreadPool
  5. C# 切换到二级域名,使用Cookie
  6. gulp中pipe的作用和来源
  7. c++计时
  8. PAT 1008 数组元素循环右移问题 (20)(代码)
  9. BZOJ 3932 [CQOI2015]任务查询系统 - 差分 + 主席树
  10. swift 属性值变化