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
阅读(886) | 评论(0) | 转发(0) |