在C语言中,unsigned char是什么类型

如题所述

unsignedchar是无符号字符类型。

char是C整型数据中比较古怪的一个,其它的如int/long/short等不指定signed/unsigned时都默认是signed,但char在标准中是unsigned,编译器可以实现为带符号的,也可以实现为不带符号的,有些编译器还可以通过编译开关来指定它是有符号数还是无符号数。

整型的每一种都有无符号unsigned和有符号signed两种类型float和double总是带符号的,在默认情况下声明的整型变量都是有符号的类型char有点特别。

扩展资料

C语言中的unsignedchar型的变量最高位也用于表示数值大小,而signedchar类型变量的最高位则用于表示数值的符号+/-,char型变量是否有符号,则属于未定义,在不同的编译器上表现可能是不同的。

因此,对于:chara;

signedcharb;

unsignedcharc;

参考资料来源:百度百科—unsignedchar

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-05-23

在C语言中,unsigned char是无符号字符类型。

char是C/C++整型数据中比较古怪的一个,其它的如int/long/short等不指定signed/unsigned时都默认是signed,但char在标准中是unsigned,编译器可以实现为带符号的,也可以实现为不带符号的,有些编译器还可以通过编译开关来指定它是有符号数还是无符号数。

在除char以外的数据类型中,如果需声明无符号类型的话就需要在类型前加上unsigned。无符号版本和有符号版本的区别就是无符号类型能保存2倍于有符号类型的正整数数据,比如16位系统中一个short能存储的数据的范围为-32768~32767,而unsigned能存储的数据范围则是0~65535。

由于在计算机中,整数是以补码形式存放的。根据最高位的不同,如果是1,有符号数的话就是负数;如果是无符号数,则都解释为正数。

扩展资料:

int与unsigned char的类型转换注意事项:

int/unsigned int变量赋值给 unsigned char变量是会发生字节截断(9位和高于9位的将被程序自动丢弃)。

例如:unsigned int a = 0xFFFFFFF7;unsigned char b = (unsigned char)a;

此时b的值为 0xF7.

参考资料来源:百度百科-unsigned char

本回答被网友采纳
第2个回答  推荐于2017-12-16
unsigned
char是无符号字节型,char类型变量的大小通常为1个字节(1字节=8个位),且属于整型。整型的每一种都有无符号(unsigned)和有符号
(signed)两种类型(float和double总是带符号的),在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符
号类型的话就需要在类型前加上unsigned。无符号版本和有符号版本的区别就是无符号类型能保存2倍于有符号类型的数据,比如16位系统中一个int
能存储的数据的范围为-32768~32767,而unsigned能存储的数据范围则是0~65535。

同样,在32位系统中一个char类型一般为8个bit,所以能存储的数据范围为-128~127,而unsigned char则是0~255,字符型所存储的数据是用来表示字符的,例如ASCⅡ或Unicode。

关于char的符号(选自thinking in C++ 2nd vol1):
signed
is the default and is only necessary with char; char may or may not
default to signed. By specifying signed char, you force the sign bit to
be used.

译:有符号类型是默认(指的是对于其他整型来说)的类型并且仅对于char来说才是必须的。char有可能是signed也有可能是unsigned(我想这可能取决于编译器或具体实现)。但通过显式地指定一个char为signed,你就迫使其成为有符号的字符型

在定义整数变量的型态的时候可以加上 unsigned 或是 signed, 例如 unsigned char unsigned short
(int) unsigned long (int) unsigned int ---------- signed char signed
short (int) signed long (int) signed int -------------- 上面 signed
有加和没有加是一样的意义 加上 unsigned 以后, 1. 所需要的数据储存空间和没有加 unsigned 时是一样的 2. 在使用
printf() 打印时基本上你必须分清楚 unsigned 有影响到的是参数的传递, 使用 %d 或是 %u 基本上是看程序设计者自己的选择
int i=-1; printf("%d %u/n", i, i); 会印出 -1 4294967295 unsigned int i=-1;
printf("%d %u/n", i, i); 也会印出 -1 4294967295 char i=-1; printf("%d %u/n",
i, i); 还是会印出 -1 4294967295 但是 unsigned char i=-1; printf("%d %u/n", i,
i); 则会印出 255 255 这不是 %d 和 %u 的问题, 而是 参数传递时数据转换的问题 (见下面第 3 项) 不一样的地方有下面几个
1. 数据的范围基本上加上 unsigned 以后会变成 2 倍 2. 程序里比较大小的时候 int i=1; int j=-1; if
(i>j) printf("i>j/n"); else printf("i<=j/n"); 你会发现结果是 i>j
unsigned int i=1; int j=-1; if (i>j) printf("i>j/n"); else
printf("i<=j/n"); 你会发现结果是 i<=j 也就是说 signed 和 unsigned 在比较的时候
compiler 会把 signed int 自动当成 unsigned int 来比较 2. 数据转换的时候 (或是函式呼叫的时候) char
i = -128; int j = i; 变量 i 里面的数据只有 1 个字节, 要放进 变量 j 里面的时候需要做 sign
extension 也就是多出来的 3 个字节 (24 个 bit) 都要 填入原来 i 的 sign bit (第 8 个 bit)
以上例来说 (用二进制表示) i: 10000000 j: 11111111 11111111 11111111 10000000
unsigned char i = -128; int j = i; 由 unsigned 转为 signed 时前面一率补 0 用二进制表示
i: 10000000 j: 00000000 00000000 00000000 10000000 char i = -128;
unsigned int j = i; 还是做 sign extension 用二进制表示 i: 10000000 j: 11111111
11111111 11111111 10000000 函式呼叫的时候会做型态的转变, 例如 void fun(int x) { ... }
呼叫时如果用 unsigned char i=-1; fun(i); 就会自动做转换本回答被网友采纳

在C语言中,unsigned char是什么类型
在C语言中,unsigned char是无符号字符类型。char是C\/C++整型数据中比较古怪的一个,其它的如int\/long\/short等不指定signed\/unsigned时都默认是signed,但char在标准中是unsigned,编译器可以实现为带符号的,也可以实现为不带符号的,有些编译器还可以通过编译开关来指定它是有符号数还是无符号数。在除c...

在c语言中,unsignedchar是什么类型?
在C语言中,unsigned char是一种整型数据类型。以下是 1. unsigned char的基本含义 unsigned char是C语言中的一种基本数据类型,它表示一个无符号字符。具体来说,“unsigned”表示该类型不允许存储负值,“char”则表示字符型数据。因此,unsigned char可以存储从0到255的整数值,对应ASCII字符表中的字符。

在C语言中,unsigned char是什么类型
unsignedchar是无符号字符类型。char是C整型数据中比较古怪的一个,其它的如int\/long\/short等不指定signed\/unsigned时都默认是signed,但char在标准中是unsigned,编译器可以实现为带符号的,也可以实现为不带符号的,有些编译器还可以通过编译开关来指定它是有符号数还是无符号数。整型的每一种都有无符号...

在C语言中,unsigned char是什么类型
unsigned char是无符号字节型,char类型变量的大小通常为1个字节(1字节=8个位),且属于整型。整型的每一种都有无符号(unsigned)

在C语言中,unsigned c?
在C语言中,unsigned char是一种特殊的类型,它代表着无符号字节型。通常,char类型的变量占用1字节,相当于8个二进制位,且属于整数类型。与其他整型(如int和short)一样,它们存在无符号(unsigned)和有符号(signed)两种形式,尽管char在默认情况下通常是无符号的,但也可以通过加上关键字"unsigned"...

在c语言中,unsignedchar是什么类型
unsigned char是C语言中的一种基本数据类型。一、unsigned char的定义 在C语言中,`unsigned char`是一种整型数据类型,用于存储字符。它表示一个无符号字符,即只能存储正数和零。二、unsigned char的存储范围 由于`unsigned char`是无符号的,其存储范围从0到255。这意味着它可以表示256个不同的状态,...

在C语言中,unsigned char是什么类型
在C语言中,unsigned char是一种特殊的整型数据类型,它与众不同之处在于其无符号特性。通常情况下,像int, long, short这样的整型数据类型如果没有明确指定为signed或unsigned,默认会是signed。然而,char类型在C语言标准中被定义为unsigned,这意味着它的值不会自动带有正负符号,可以表示更大的数值范围...

在C语言中,unsigned char是什么类型
无符号字符型,可以看成用来表示0~255的整数的类型

C语言 unsigned char 和unsigned int什么区别和联系?分别多少位?求简介...
unsigned char为无符号字符类型,而unsigned int为无符号整数类型。unsigned char为8位,多数情况下unsigned int为32位。但随系统的不同它的位数可能变化,有时是与系统位数对齐的,也就是说对8位的系统,它是8位,16位系统则为16位,32位的系统则为32位。

在C语言中,unsigned char是什么类型
unsigned是标识符,表示无符号,也就是非负,一般没有unsigned的char范围是-128到127,而unsigned char是0到255

相似回答