关于c语言中char类型范围问题

作者&投稿:说蓓 (若有异议请与网页底部的电邮联系)
c语言中关于char范围的问题~

char的取值范围为-128~127,所以char ch = 255;其实为char ch = -1;
所以printf("%d , %d , %d
" , ch , ch + 1 , ch + 2);输出-1,0,1

按八位来算:在计算机里面是用补码表示的,128的二进制码是:10000000,这个东西在计算里面并不是128,因为最高位是符号,它是个负数,那么负数的原码是多少呢,我们知道如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位为1,其余各位取反,然后再整个数加1。 所以,10000000取反后就是11111111,把符号位去了就是01111111再加1就是10000000就是-128了。其实你看-127是10000001,这个很好理解,-128加1不就是-127
在C/C++中,char是C/C++整型数据中比较古怪的一个,
而且关于char还有一个特殊的语言就是char *,它在C/C++中有专门的语义,既不同于signed char *,也不同于unsigned char *,专门用于指以'\0'为结束的字符串
C语言是弱类型还没什么,如果在C++中,你可以试一试
char *p="abcd";
是可以通过编译的但如果用
signed char *p="abcd";
还是
unsigned char *p="abcd";
都是不能通过编译的。
关于这些在C/C++的语言标准或一些经典书籍如TheC++Programing Language中都有很清楚的说明。
判断编译器的默认char符号


#include int main(void){ char c=-1; if(c<200){ printf("signed
"); } else{ printf("unsigned
"); } return 0;}char 还在pascal语言中应用。在Pascal语言中,字符常量是由单个字符组成,所有字符采用ASCII编码也称ASCII码

127用二进制表示是01111111
最前面的1是符号位 第一位是1就是负数了

char是一个字节的,但是用来存储字符串的时候,都是一长串的char来存储的,并不是单一的char,单一一个char无论vc还是tc都不能存下中文或者unicode。

127=01111111

-128=10000000

11111111=-1

你再好好看看书,-127和-1到底是什么。

如果-1是10000001,那么10000000是什么?-0吗?

我记得负数是绝对值后取反码再+1

在内存中,char型数据是存放的字符的ASCII码的二进制补码形式。
ASCII码为127时,内存中存的是0111 1111,ASCII码为-128时,内存中存的是1000 0000
注:对于正数,原码=反码=补码
对于负数,反码=除符号位按位取反的值,补码=反码+1


单片机c语言中char是什么意思
char 是字符变量,用来申请字符和字符串或者字符串指针的 int是整型变量,用来申请整型数据,或者整形数据指针 单片机的C语言和普通C语言语法是一模一样的,但是细节上有些差异,,都是char占用一个字节内存,但int占用2字节内存。所以C++程序员做单片机开发也是没有太大的障碍的,毕竟有很多规则是一样的...

C语言中的char具体用法
b就是一个char类型的指针。我们把第一个叫做字符数组,第二个叫做字符指针。用法是字符数组在初始化的时候,是把字符串里面的元素复制到数组里面,包括'\\0',而字符指针则是指向一个常量,所以,不能用b[1] = 'c';这种方式修改b这个字符串,常量是不能更改的,不过可以让它指向别的字符地址。

char在c语言中是什么意思?
char* 是声明一个字符类型的指针。比如:chat* y;就是声明一个指针y,这个指针指向的地址上只能存放字符类型的值。

C语言中 char与int有什么区别?
C语言中 char 与 int 具体区别如下:1、表示的变量类型不同:char 是字符变量,而 int 是整型变量。2、申请的类型数据不同:char 用来申请字符和字符串或者字符串指针;int 用来申请整型数据,或者整形数据指针。3、字节、能表示的内容不同:char只有一个字节,int有4个字节,能表示的内容大小不一样...

C语言中char是什么意思?求详细解答,谢谢
char 是基本数据类型,用来声明字符变量 比如说 char x; x就是储存字符数据的变量 并且char 类型,只能储存单字节,例char x='a',char y='变',只能赋值一个字节,并使用单引号。

C语言中,char类型数据占多少字节?
char 1个字节 16位编译器 32位编译器 64位编译器

c语言string和char的区别
2、字符串类型 字符串类型(string)是由多个字符组成的字符序列。在C语言中,字符串在内存中以null字符作为结尾。字符串类型需要使用字符数组来存储,数组中的每个元素存储一个字符。例如,char str[10]=“Hello”;定义了一个字符数组,用来存储字符串“Hello”,数组长度为10,包括null字符。C语言的...

C语言中的char是什么意思
关键字 char 是 字符类型,也是最小整型类型。如字符或字符串可存储在字符变量或字符数组中。也可定义值较小的整型变量。

C语言中char是什么类型的?
char 称为字符类型。char*代表字符串存储,它作为一个指针的地址入栈。1、C语言适合当第一门编程语言学习 ①、C语言语法相对简单,但又比较完整和严谨,包含该有的各种元素。学完C语言语法,要学习其它编程语言就很容易了。②、C语言接近底层,可以了解内存和计算机的基本原理。③、许多基础课程比如算法...

C语言中char是什么类型?
c的char数据属于基本类型,基本类型其中还包括-整型,实型,枚举类型!数据在内存中是以二进制形式存放的。数值是以补码表示的。整型:一个正数的补码和其原码的形式相同。而负数的补码方式是将其绝对值的二进制形式“按位求反再加1”实型:在内存中占4个字节,是按照指数形式存储的,实型数据分为...

恩平市17246335965: C语言中char的数值范围 -
蛮空利血: 按八位来算: 在计算机里面是用补码表示的,128的二进制码是:10000000,这个东西在计算里面并不是128,因为最高位是符号,它是个负数,那么负数的原码是多少呢,我们知道如果补码的符号位为“1”,表示是一个负数,求原码的操作...

恩平市17246335965: C语言,char字符型的取值范围是0 - 255,表示的是只有255字符(难道计算机只有255个字符吗) -
蛮空利血: 首先ASCII表设计的时候没有考虑到中文字符. 然后关于ASCII表中的字符个数可以网上查到是256个. 因为char类型占内存为1Byte == 8bit,每个bit位都有0/1两个可能,所以2的8次方为256. 其中前128个为常用的字符 如 运算符 字母 数字等 ...

恩平市17246335965: C语言中怎么计算一个类型的取值范围?如 char 用程序算 -
蛮空利血: C语言中char类型占一个字节,属于有符号数,按补码进行数据存放. 如果用程序,来获取取值范围,可以设置两个变量来存储最大值和最小值,另设一个unsigned char型变量,从一个字节的0(00000000)开始累加,直到变成255(11111111),...

恩平市17246335965: 关于c语言中char类型范围问题 -
蛮空利血: 127用二进制表示是01111111 最前面的1是符号位 第一位是1就是负数了

恩平市17246335965: c语言中计算int,float,double,char四种数据类型所能表示的数据范围 -
蛮空利血: 数据范围: 1、char 1字节 2、short 2字节 3、int 4字节 4、long 4字节 5、long long 8字节 6、float 4字节 7、double 5字节 8、long double 12字节

恩平市17246335965: c语言中怎样给char型变量限定范围 例如:char i;i=a - b;a,b是任意数,我想要i的值是在 - 10到10之间,怎样限制 -
蛮空利血: 对 11 取余即可 i = (a - b) % 11;这样i的结果肯定是在-10到10之间了 :)我再补充一个例子程序,以及它的运行结果: 代码: #include <stdio.h>int main(void) {char a, b;char i; a = 19;b = 3;i = (char)(a - b) % 11;printf("i = %d\n", i); ...

恩平市17246335965: C语言中:char占1个字节,数值范围是 - 128到127. 我想问的是:char的数值范围为什么不是 - 128到128 -
蛮空利血: 1个字节有256个状态. -128~-1有128个状态. 0~127有128个状态.已经齐了.

恩平市17246335965: c语言中 int char uint uchar 的取值范围都是多少 -
蛮空利血: char占一个字节,也就是8个二进制位,但它表示的是有符号的类型,所以表示的范围是 -128~127 uchar表示无符号的类型,所以表示的范围是0~255 int占4个字节,32位二进制位,它表示有符号的整数,表示的范围是-2^31~2^31-1 uint表示无符号的整数,表示的范围是0~2^32-1

恩平市17246335965: 关于C语言数据类型取值范围? -
蛮空利血: 32位平台: 分为有符号型与无符号型. 有符号型: short 在内存中占两个字节,范围为-2^15~(2^15-1) int 在内存中占四个字节,范围为-2^31~(2^31-1) long在内存中占四个字节,范围为-2^31~2^31-1 无符号型:最高位不表示符号位 unsigned ...

恩平市17246335965: C语言char类型数据是不是远远不止ASCII码 -
蛮空利血: 是不止ASCII码值的.在C语言中,char类型占1个字节,8位二进制.其范围为-128~127.而传统的ASCII码值只有0~127部分.所以,char能表示的数据范围,非负数部分用来表示ASCII码.其余部分,用作它用,比如显示汉字,或者其它非ASCII码值等等.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网