c语言 char占几个字节??

Python016

c语言 char占几个字节??,第1张

只占一个字节。

char用于C或C++中定义字符型变量,只占一个字节,取值范围为 -128 ~ +127(-2^7~2^7-1)。

C语言中如int、long、short等不指定signed或unsigned时都默认为signed,但char在标准中不指定为signed或unsigned,编译器可以编译为带符号的,也可以编译为不带符号的。

扩展资料

(1)定义:char型数据是计算机编程语言中只可容纳单个字符的一种基本数据类型。

(2)取值范围:char : -2^7 ~ 2^7-1 ;

signed char: -2^7 ~ 2^7-1

unsigned char : 0 ~ 2^8-1

而且关于char还有一个特殊的语言就是char *,它在C/C++中有专门的语义,既不同于signed char *,也不同于unsigned char *,专门用于指以'\0'为结束的字符串。

按八位来算:

在计算机里面是用补码表示的,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 <stdio.h>

int main(void)

{

  char c=-1

  if(c<200){

  printf("signed\n")

  }

  else{

  printf("unsigned\n")

  }

  return 0

}

char 还在pascal语言中应用。在Pascal语言中,字符常量是由单个字符组成,所有字符采用ASCII编码也称ASCII码

char的取值范围为-128~127,所以char ch = 255其实为char ch = -1

所以printf("%d , %d , %d\n" , ch , ch + 1 , ch + 2)输出-1,0,1