Chinaunix首页 | 论坛 | 博客
  • 博客访问: 125037
  • 博文数量: 22
  • 博客积分: 1126
  • 博客等级: 少尉
  • 技术积分: 282
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-22 23:01
个人简介

勇敢追求自己,加油加油

文章分类

全部博文(22)

文章存档

2011年(1)

2010年(21)

我的朋友

分类: C/C++

2010-12-28 10:42:21

char类型,即字符类型(也称字符型),char类型的值,可以根据计算机的不同而不同,因为不同的机器可能会有不同的字符集。

char ch;

int i;

i=a;        /* i is now 97 */

ch=65;       /* ch is now A */

ch=ch+1;     /* ch is now B */

ch++;        /* ch now is C */

既然c语言允许把字符作为整数来使用,那么char类型应该像整数一样也存在有符号型和无符号型两种。通常有符号的取值范围是-128~127.无符号的取值范围是0~255.

C语言的标准并没说明普通char类型数据时有符号型和无符号型。各个编译器对待char类型都不一样。

例如如下的程序:

/************************************************************/

#include

int main()

{

    int sum=300;

    char ch=127;

    printf("sum=%d,(char)ch=%c,(int)ch=%d\n",sum,ch,ch);

    ch+=1;

    sum+=ch;

    printf("sum=%d,(char)ch=%c,(int)ch=%d\n",sum,ch,ch);

    return 0;

}

/************************************************************/

 这里面主要考察ch+=1之后,变量ch的值为多多少呢?

这就要看编译器了,由于编译器默认的char数据类型的类型有所不同,结果也不同。

如果编译器定义的是有符号类型那么ch的结果就是-128,因为有符号类型的char的范围是-128~127.

如果编译器定义的是无符号类型那么ch的结果就是128,因为无符号类型的char的范围是0~255.

阅读(2850) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~