char的有无符号类型

char 分为有符号性(signed)和无符号型(unsigned)两种:

Ø若是signed型,就意味着取值范围为[-128,127];

Ø若是unsigned型,就意味着取值范围为[0,255];

C语言中我们通常直接用类型char,但是它究竟是被当做signed型还是unsigned型,由编译器决定。

C语言允许我们在char前面加上关键字signed或者unsigned,这样,无论在编译器中被当做signed还是unsigned,都会按照前面加的这个关键字来决定。

例如:假设我们现在使用的编译器,把char当做signed来看到,则

char c1;

signed c2;

unsigned c3;

则c1和c2的取值范围都是[-128,127],而c3的取值范围则是[0,255]。

所谓取值范围,是指其值在这个范围之内时,会被正确处理,超出这个范围就会发生溢出。但在这个范围之内,并不意味着它就是可打印字符。这点不要混淆。

时间: 2024-08-07 21:18:45

char的有无符号类型的相关文章

nm命令中符号类型详解

摘自http://blog.csdn.net/solmyr_biti/article/details/6565479 nm命令介绍的很多,但大多不介绍其函数符号标志的含义.最近在调试动态库时常用到,其中用的最多的用法:nm -A * |grep “aaa” | c++filt  // -A 为了显示文件, c++filt转换为可读风格,好像有个参数也能实现类似功能 其他内容整理如下(原作者未知): nm用于列出目标文件的符号清单,如果没有指定目标文件,则默认为“a.out”.nm的格式如下: n

有符号char转无符号short

char ch = 255; cout<<(int)ch<<endl; //-1 unsigned short d = ch; short dd = ch; cout<<d<<endl;//65535(2^16 - 1) cout<<dd<<endl;//-1 要点是:这里char是有符号的!.(255) = 0xff.因为char有符号,所以拿出来的整型值是-1,将-1给无符号的unsigned short d 会将ff放在低字节的

unsigned无符号、有符号类型的转换

先看一段代码 #include <stdio.h> main(){ unsigned char a = -1; char b = a; printf("%d %d",a,b); return 0; } a输出为255,b输出为-1.原因在于无符号类型和有符号类型像高精度转化时候不一样. char类型长度是1个字节8位,而数字在计算机中是以补码形式存储的. 所以a=-1在计算机内对应的值是0xFF.把a赋给b,b的值也是0xFF. 输出时候,printf会把a.b转化为int

c/c++带符号类型和无符号类型

除了布尔型和扩展类型,其它整型可分为带符号的和无符号的,带符号的可表示正数."0".负数,不带符号的只能表示正数和"0",若要声明变量为无符号类型可使用unsigned来声明,声明为有符号的用signed.像int.short.long这些类型默认都是带符号的,因此不用声明为带符号的,若要声明为无符号的话在在类型名前加unsigned就行. 字符型和其它整型不同,可分为三种,分别为char.signed char.unsigned char.要注意的是char 和

有符号和无符号类型运算

#include <iostream> int main() { unsigned i = 10 , j = 30 ; int m = -42 , n = 30 ; std::cout<<i-j<<std::endl; std::cout<<m*i<<std::endl; std::cout<<unsigned(-420)<<std::endl; return 0 ; } 结论:有符号和无符号类型相运算(加减乘除),先运算

C++ 无符号类型的运算对象参与的类型转换

我的主力博客:半亩方塘 当某个运算符的运算对象类型不一致,且其中某一个运算对象是无符号类型时,这个需要进行相应地类型转换,至于类型转换的结果,则 依赖于机器中各个整数类型的相对大小 . 当某个运算符的运算对象类型不一致,且其中某一个运算对象是无符号类型时,分为以下几种情况: 当 无符号类型 的运算对象 大于 有符号类型 的运算对象时,则将 有符号类型转换为相应的无符号类型后再进行运算,转换规则见我的博客 C++ 中有符号类型到无符号类型的转换 当 有符号类型 的运算对象 大于 无符号类型 的运算

关于java中char类型和int类型相加结果的面试题

运行结果为 3 51 C 故而总结了以下几点: 举例子说明一下. System.out.println('0'+'A');// 48+65 = 113 未指定类型--输出int System.out.println((char)('0'+'A'));// q 强转char --输出char System.out.println(10+'A'); //75 未指定类型--输出int System.out.println((char)10+'A'); //75 未指定类型--输出int System

java中int,char,string三种类型的相互转换

如何将字串 String 转换成整数 int? int i = Integer.valueOf(my_str).intValue(); int i=Integer.parseInt(str); 如何将字串 String 转换成Integer ? Integer integer=Integer.valueOf(str); 如何将整数 int 转换成字串 String ? 1.) String s = String.valueOf(i); 2.) String s = Integer.toStrin

java中无符号类型的处理

在Java中,不存在Unsigned无符号数据类型,但可以轻而易举的完成Unsigned转换. 方案一:如果在Java中进行流(Stream)数据处理,可以用DataInputStream类对Stream中的数据以Unsigned读取. Java在这方面提供了支持,可以用java.io.DataInputStream类对象来完成对流内数据的Unsigned读取,该类提供了如下方法:(1)int   readUnsignedByte()    //从流中读取一个0~255(0xFF)的单字节数据,