char是C/C++整型数据中比较古怪的一个,其它的如int/long/short等不指定signed/unsigned时都默认是signed。虽然char在标准中是unsigned(因为char类型提出的初衷是用来表示ascii码,ascii码的范围是0~127),但实际情况中究竟是signed还是unsigned取决于编译器。

可通过下面程序判断编译器的默认char类型:

1

voidchar_type()2

{3charc=0xFF;4if(c==-1)5    printf("signed");6  elseif(c==255)7    printf("unsigned");8else9    printf("error!");10}

当你不确定编译器的默认char类型时,就用显示声明:signed char和unsigned char;

在C/C++语言中,char变量为一个字节,8位,signed char表示的范围:-128~127【-128在内存中的二进制表示为1000 0000,127在内存中的表示为0111 1111】;unsign char表示的范围:0000 0000~1111 1111,即0~255;

注意:整数在内存中是以补码存取的,正数的补码:等于自己,负数的补码:取反加1,例如:127在内存中表示为0111 1111, -127在内存中表示为~(0111 1111)+1=1000 0001; 假定某内存单元p的内容是1111 1111,那么它一定是255吗?实际上取决于你的代码是要把它看成有符号还是无符号数,如果是无符号则表示255,如果是有符号则表示-1【对于有符号数,最高位为符号位,1表示负,0表示正】:

signed char c=*p; //c=-1

unsigned char c=*p;//c=255

这也解释了上面这段代码能判断编译器默认char类型。

posted on 2010-11-07 13:22 oliver 阅读(16706) 评论(0)  编辑 收藏 引用 所属分类: C/C++

c语言变量类型char,C语言中char变量详解相关推荐

  1. c语言关键字extern作用,C语言中extern关键字详解

    <C语言中extern关键字详解>由会员分享,可在线阅读,更多相关<C语言中extern关键字详解(5页珍藏版)>请在人人文库网上搜索. 1.C 语言中 extern 关键字详 ...

  2. c语言函数time用法,c语言中time函数详解

    总结: time_t time(time_t *timer); 返回以格林尼治时间(GMT)为标准,从1970年1月1日00:00:00到此刻的本地时间所经过的秒数,time_t实际是个long长整型 ...

  3. java 函数fun_c语言中fun用法详解_后端开发

    Java Dao层的作用_后端开发 Dao层叫数据访问层,属于一种比较底层,比较基础的操作,可以具体到对于某个表或某个实体的增删改查,其Dao层的作用是对数据库的访问进行封装,从而不涉及业务,实现解耦 ...

  4. c语言中funx的作用,c语言中fun用法详解

    C语言中fun用法详解 fun函数是自定义的C/C++语言函数,函数功能多样.该函数名为"函数"英文function的简写,一般在示例和试题中使用,通常在主函数中被调用. C/C+ ...

  5. C语言中const用法详解

    C语言中const用法详解 const修饰普通变量 const作用在于定义一个常量,比如const int a = 10,代表a的值不能被直接修改了,是一个常量,但仍可以通过指针的方式间接修改,如下图 ...

  6. C语言字符意思 char,c语言中char* 代表什么

    1 c语言中,char* 代表 字符指针类型,当其指向一个字符串的第一个元素时,它就可以代表这个字符串了 2 示例 #include int main(){ char* str = "lea ...

  7. C语言中static关键字详解

    C语言中staic关键字很简单,简单到你的任何一个项目中可以不写一个staic关键字也是没有问题的.写这篇章主要是一下自己的staic的理解和应用,当然在章开头依旧要照本宣科简述一下static关键字 ...

  8. C语言中extern用法详解

    在C语言中,修饰符extern用在变量或者函数的声明前,用来说明"此变量/函数是在别处定义的,要在此处引用".  1. extern修饰变量的声明. 举例来说,如果文件a.c需要引 ...

  9. C语言中typedf函数的用法,C语言中typedef用法详解

    在C语言中,经常有如下的用法: typedef struct  tag{    ...} MyType, *MyPtr; 一旦通过如上定以后,就可以用MyType来定义struct tag结构了. 以 ...

  10. C语言中printf格式详解

    转自:http://blog.sina.com.cn/s/blog_60d6aadc0100undv.html printf的格式控制的完整格式: % - 0 m.n l或h 格式字符 下面对组成格式 ...

最新文章

  1. reid笔记 yolov5 deepsort
  2. LintCode Longest Increasing Continuous Subsequence
  3. nodejs express 路由与view创建多级目录
  4. yum是什么?(linux命令) .
  5. 【转载】要有梦想-创造卓越的职业生涯
  6. typedef 指向函数的指针
  7. 万圣节魅惑手绘插画素材,没想到你是这样的可爱!
  8. PHP 的 Git 服务器被黑客入侵,源码库将永久迁移至 GitHub!
  9. centos7 docker安装_教你如何在 CentOS 7 下 yum 方式安装 Docker 环境
  10. 智能雷达存在感知技术,家居场景方案应用,毫米波雷达探测方案
  11. OpenGL ES 理解纹理与纹理过滤
  12. 阿里达摩院做AI这两年
  13. linux网页版控制台,linux Web控制台
  14. 命令提示符PS1的书写格式
  15. 英国议会上院AI报告AI in the UK-ready, willing and able附原文183页(赞赏后下载ZIP包)
  16. PS制作3D立体字、透明气泡
  17. oswatch的安装和使用
  18. H264中4x4、8x8和16x16尺寸对应场景
  19. 最全面的SpringMVC教程(六)——WebSocket
  20. java解应用题思路是什么_小学数学应用题解题策略归纳

热门文章

  1. centso系统命令来源查询
  2. java 字符串中提取数字_java从字符串中提取数字的简单实例
  3. 如何将各种电子书格式转换为PDF格式
  4. HWADDR配置错误导致network重启失败处理
  5. [统计学笔记] 统计学中的相关关系和三大相关系数
  6. 5G基站君的进化之路 — CU和DU分离
  7. 怎样通过计算机修改蓝牙音箱,有线音箱怎么改蓝牙无线音箱 有线音箱改无线音箱方法介绍【详解】...
  8. 房产证和不动产权证有什么区别?
  9. android 更新相册,Android 图片存入系统相册更新显示实例详解
  10. Python图像处理库PIL的基本概念介绍