c# char unsigned_C 中 char、signed char 和 unsigned char 的区别
C 中 char、signed char 和 unsigned char 的区别
来源:http://bbs.chinaunix.net/thread-889260-1-1.html
参考:https://publications.gbdirect.co.uk//c_book/chapter2/integral_types.html
ANSI C 提供了3种字符类型,分别是char、signed char、unsigned char
char相当于signed char或者unsigned char,但是这取决于编译器!
这三种字符类型都是按照1个字节存储的,可以保存256个不同的值。
signed char取值范围是 -128 到 127
unsigned char 取值范围是 0 到 255
但是char究竟相当于signed char呢还是相当于unsigned char呢??
这就是char和int的不同之处!
int == signed int,但是char不能简单以为 == signed char
要确定char究竟等同什么要基于不同的编译器做测试
大多数机器使用补码来存储整数,在这些机器中按照整数类型存储的-1的所有位均是1
假设我的机器也是如此存储,就能据此判断char究竟是等于signed char还是unsigned char
编译器提供以下参数来对char类型进行设置,
-funsigned-char : 设置为 unsigned char
-fno-signed-char : 设置为 非 signed char
-fsigned-char : 设置为 signed char
-fno-unsigned-char : 设置为 非 unsigned char
limits.h
/*Number of bits in a `char'.*/# define CHAR_BIT8
/*Minimum and maximum values a `signed char' can hold.*/# define SCHAR_MIN (-128)
# define SCHAR_MAX127
/*Maximum value an `unsigned char' can hold. (Minimum is 0.)*/# define UCHAR_MAX255
/*Minimum and maximum values a `char' can hold.*/# ifdef __CHAR_UNSIGNED__
# define CHAR_MIN0# define CHAR_MAX UCHAR_MAX
#else# define CHAR_MIN SCHAR_MIN
# define CHAR_MAX SCHAR_MAX
# endif
/*The character type that char matches (i.e., signed or unsigned)*/
#if CHAR_MIN < 0typedef signedcharunderlying_char_type;#elsetypedef unsignedcharunderlying_char_type;#endif
test_char.c
#include
intmain(void)
{char a = -1;
signedchar b = -1;
unsignedchar c = -1;
printf("a=%d, b=%d, c=%d", a, b, c);return 0;
}
output
# ./test_char.elf
a=-1, b=-1, c=255 // 从这里可以看出 默认的 char 类型就是 signed char 类型
============ End
以上就是C 中 char、signed char 和 unsigned char 的区别的全部内容。
c# char unsigned_C 中 char、signed char 和 unsigned char 的区别相关推荐
- 'unsigned char'-C编程中的声明,赋值和用法
char is a data type in C programming language which can store value from -128 to +127. It generally ...
- linux 下byte,char,unsigned char的区别
在linux中,对byte的定义为无符号char,而char默认为有符号char. #ifndef BYTE #define BYTE unsigned char #endif 以下ZZ百度知道: 在 ...
- 基于C语言char与unsigned char的区别介绍
在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别. 首先在内存中,char与unsigned char没有什么不 ...
- 【错误记录】Android NDK 编译报错 ( no known conversion from ‘unsigned char *‘ to ‘const char *‘ )
文章目录 一.报错信息 二.解决方案 一.报错信息 在 Visual Studio 2019 中编译 Android NDK , 构建方式参考 [Android 逆向]Android 进程注入工具开发 ...
- 用cout输出uchar(unsigned char)变量时,没有输出结果怎么办?
在OpenCV中uchar实际上就是unsigned char,其定义如下: typedef unsigned char uchar; 在图像处理中,我们经常用unsigned char代表我们的灰度 ...
- unsigned char型整数
在一些大型的公司编码项目中,喜欢用unsigned char来定义部分整数. 原因有两点: 1.char类型本来是用来存储字母和字符的,但是在技术实现上char却是整数类型,这是因为char类型实际存 ...
- 2字节char转16进制unsigned char或者int
在C语言中,常常需要将txt文件转换成bin文件,所以需要将两字节的字符,转换成16进制的unsigned char类型.有时也会将int型转换成两字节的char,还原时也需要转换. /*! @Bri ...
- 嵌入式开发中对(*(volatile unsigned long *)) 的理解
一.说明 (*(volatile unsigned long *)) 这个语句对于不同的计算机体系结构,设备可能是端口映射,也可能是内存映射的.如果系统结构支持独立的IO地址空间,并且是端口映射,就必 ...
- 不同编译器中,char的默认类型是signed char还是unsigned char它们遵循的原则是什么?
不同编译器中,char的默认类型是signed char还是unsigned char它们遵循的原则是什么?
最新文章
- 央视曝光:股市暴跌暴涨,投资的安全感在哪里?
- Struts2国际化文件乱码解决
- CNCF 沙箱项目 OCM Placement 多集群调度指南
- bga焊盘怎么做_BGA封装的类型及焊盘设计的基本要求有哪些
- php投票系统报告,投票系统设计
- [商业]文件文件夹对比合并工具Araxis Merge
- C 线程的使用~(下)
- BZOJ3110: [Zjoi2013]K大数查询(整体二分)
- android listpreference 自定义,Android ListPreference的用法一
- 让cp显示进度的脚本
- hihoCoder - 1075 开锁魔法III
- 利用域策略设置域用户IE主页设置
- java开发spc分析软件,SPC、五大工具带你深入实战......OMG,收藏!
- 2022-05-25 网络测试软件PingTools
- PHP如何判断图片是否伪造
- seo站长,必备批量工具
- 重庆万州公交车坠江原因公布:乘客与司机激烈争执互殴致车辆失控
- Normalize.css 支持 HTML5 的CSS Reset
- TalkingData :如何做到30分钟内完成对数十亿受众数据的分析 | 会员专栏
- unity项目之太空大战(2)