Chinaunix首页 | 论坛 | 博客
  • 博客访问: 170380
  • 博文数量: 49
  • 博客积分: 2802
  • 博客等级: 大尉
  • 技术积分: 502
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-25 12:02
个人简介

来就来吧

文章分类

全部博文(49)

文章存档

2014年(1)

2012年(1)

2011年(11)

2010年(26)

2009年(10)

分类: C/C++

2010-02-22 10:11:01

c中 一般定义 char a = 'a' ; 也可以定义 char a= 97;
printf("%c", a);   // a
 
如果定义为
char a = 'abcdef' 呢?
此时编译会报警
warning: overflow in implicit constant conversion
 
可以运行,打印结果为printf("%c",a); // 输出为f
原因:
因为char是1字节,int是4字节
如果你使用超过255的数字给char赋值,实际是用int的最后一字节给了char,就是对数字取256的余数.比如char a;a=256+65;
a还是65即A.
会出现上述的警告错误。我们一般不会这么用的。赋值的操作有编译器来完成。
同样的道理:
char a = 256 ; //255就可以。
 
测试如下
#include "stdio.h"
#include "stdlib.h"
int main(int argc, char *argv[])
{
    char a='abcdef';
    printf("a = %x\n", a);
    printf("a = %c\n", a);
    printf("a = %d\n", a);
}
 
========
a = 66
a = f
a = 102
 
 
阅读(852) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~