char 与 signed char 和 unsigned char三者之间的关系


  1. 三者都占用 1个字节,即 8 bit
  2. signed char取值范围(-128, 127)
  3. unsigned char取值范围(0, 255)
  4. 三个内存中存储的都是一样的东东,只是在运算时进行解析的方式不同
  5. 其如何解析和编译器有关。不同的编译器对char的解析不同,如将其定义为signed char的有:
  • VC编译器
  • x86上的GCC

    将其定义为unsigned char的有:arm-linux-gcc
  1. char可以当字符用,原始ASCII标准里定义的字符码值只有0~127,所以两种定义都装的下。
  2. char可以当单字节整数用,ASCII标准里的字符串都本质上是一个整数。
  3. unsigned char的高位扩展,以为没有最高的符号位,所以8位_bit_都作为了数值位,因此能表示(0~255)。但在屏幕上显示时可能会不同。

**测试代码: **

  1. #include <stdio.h>
  2. void f(unsigned char v)
  3. {
  4. char c = v;
  5. unsigned char uc = v;
  6. unsigned int a = c, b = uc;
  7. int i = c, j = uc;
  8. printf("----------------\n");
  9. printf("%%c: %c, %c\n", c, uc);
  10. printf("%%X: %X, %X\n", c, uc);
  11. printf("%%u: %u, %u\n", a, b);
  12. printf("%%d: %d, %d\n", i, j);
  13. }
  14. int main(int argc, char *argv[])
  15. {
  16. f(0x80);
  17. f(0x7F);
  18. return 0;
  19. }

输出:

  1. %c: ?, ?
  2. %X: FFFFFF80, 80
  3. %u: 4294967168, 128
  4. %d: -128, 128
  5. ----------------
  6. %c: ,
  7. %X: 7F, 7F
  8. %u: 127, 127
  9. %d: 127, 127

http://blog.csdn.net/zx824/article/details/6884352

char 与 signed char 和 unsigned char三者之间的关系的更多相关文章

  1. 【Linux网络编程】TCP网络编程中connect()、listen()和accept()三者之间的关系

    [Linux网络编程]TCP网络编程中connect().listen()和accept()三者之间的关系 基于 TCP 的网络编程开发分为服务器端和客户端两部分,常见的核心步骤和流程如下: conn ...

  2. 程序中try、throw、catch三者之间的关系

    c++程序中,采用一种专门的结构化处理逻辑的异常处理机制. 1.try语句 try语句块的作用是启动异常处理机制,检测try语句块中程序语句执行时可能出现的异常. try语句块总是与catch一同出现 ...

  3. silverlight Canvas、StackPanel、Grid三者之间的关系

    学习 silverlight   首先Canvas.StackPanel.Grid 博客园里看到jailu的这篇文章整理得很好 贴下来: Silverlight提供了非常灵活的布局管理系统,让程序员和 ...

  4. 电脑结构和CPU、内存、硬盘三者之间的关系

    前面提到了,电脑之父——冯·诺伊曼提出了计算机的五大部件:输入设备.输出设备.存储器.运算器和控制器. 我们看一下现在我们电脑的: 键盘鼠标.显示器.机箱.音响等等. 这里显示器为比较老的CRT显示器 ...

  5. 网络互联技术(2)——前篇—【转载】电脑结构和CPU、内存、硬盘三者之间的关系

    原文链接:传送门 详细内容: 电脑结构和CPU.内存.硬盘三者之间的关系 前面提到了,电脑之父——冯·诺伊曼提出了计算机的五大部件:输入设备.输出设备.存储器.运算器和控制器. 我们看一下现在我们电脑 ...

  6. 转:spring data jpa、 hibernate、 jpa 三者之间的关系

    原文链接:spring data jpa. hibernate. jpa 三者之间的关系 spring data jpa hibernate jpa 三者之间的关系 JPA规范与ORM框架之间的关系是 ...

  7. Window系统、主函数和窗体函数这三者之间的关系

    理解Window系统.主窗体.窗体函数这三者之间的关系,对于编写Windows程序十分重要. 主函数和窗体函数都是由Windows系统来调用的函数.仅仅只是主函数是程序启动之后.系统首先调用的函数: ...

  8. 5.Javascript 原型链之原型对象、实例和构造函数三者之间的关系

    前言:用了这么久js,对于它的原型链一直有种模糊的不确切感,很不爽,隧解析之. 本文主要解决的问题有以下三个: (1)constructor 和 prototype 以及实例之间啥关系? (2)pro ...

  9. 【面向对象】----【prototype&&__proto__&&实例化对象三者之间的关系】(四)-----【巷子】

    1.构造函数 a.什么是构造函数? 解释:通过关键字new 创建的函数叫做构造函数 作用:用来创建一个对象 废话少说直接上代码,首先我们还是创建一个构造函数人类 然后我们在创建两个实例,一个凡尘 一个 ...

随机推荐

  1. IP 地址子网划分

    1.1 IP地址子网划分 1)容易造成地址浪费 2)容易产生严重的广播风暴 3)会造成路由器转发压力过大 1.2     庞大的网段需要进行子网划分 1)可以有效避免地址浪费 2)有效减少广播风暴的产 ...

  2. Go语言基础之4--流程控制

    一.if else语句 1.1 基本语法1 语法1: if condition { //do something } 语法2: if condition { //do something } else ...

  3. 查询多列得到map与查询得到po对象

    import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; i ...

  4. esper(3)-窗口&聚合分组

    一.Insert and Remove Stream 1. select * from com.ebc.updatelistener.User 只输出newEvents,不会输出oldEvents.即 ...

  5. WIN10安装SW2012完整破解文件和问题解决Crack

    Win10在安装solidword后,激活时有可能报错,本文介绍怎么解决问题 安装后激活报错信息: 一.按下面步骤进行安装 1.相关序列号,记住要断网进行安装 Install SolidWorks 2 ...

  6. VMware 无法连接虚拟设备ide1:0,主机上没有相对应的设备,您 要在每次开启此虚拟机时都尝试连接此虚拟设备吗?

    无法连接虚拟设备ide1:0,主机上没有相对应的设备,您 要在每次开启此虚拟机时都尝试连接此虚拟设备吗? 运行VMware,出现以上错误. ide1:0一般是虚拟机的光驱,配置默认选项是“使用物理驱动 ...

  7. 虚拟机 ---- 最小化安装无法使用tab补全键

    解决方法: 安装 yum -y install bash-completion 然后重启 注意:挂载时使用绝对路径的cdrom挂载,  ls -l /dev/cdromvim /etc/fstab — ...

  8. 转 from __future__ import unicode_literals

    转自 https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0013868200230 ...

  9. 移动测试之appium+python 入门代码(四)

    最近工作中想要做自动化回归测试,想法是将每个测试用例都做自动截图,然后将最近的稳定版本和当前测试的版本的两张截图去对比,也要将两个版本的截图都放到测试报告中方便人工来进行验证.最初想法是通过HTMLT ...

  10. SQLiteOpenHelper 升级onUpgrade 的调用问题

    onUpgrade 的调用次数问题 比如说现在数据库版本是1,然后此时我修改代码定数据库版本为5. 那么系统在调用onUpgrade的时候是只调用一次(oldVersion == 1, newVers ...