字符赋值

908阅读 0评论2010-02-22 zhxw123
分类:C/C++

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
 
 
上一篇:sizeof 运算符 及结构体对齐
下一篇:div css 居中, 兼容ff