心血来潮试了试,给一个字符赋多个字母回如何?
#include<stdio.h>
#include<stdlib.h>
int main(){
char a = 'a';
char b = 'abcd';
char c = 'abcde';
printf("%c\n", a);
printf("%c\n", b);
printf("%c\n", c);
system("pause");
return 0;
}
这个程序是有错误的,错误在于
char c = 'abcde'; //常量中字符太多
但是,
char b=‘abcd’;
是正确的,并且能输出,但要注意的是它只能输出最后的字母‘d’。
为何char能接受四个字符呢?
主要问题在于转义符上:
看最后两个 \ddd \xhh
也就是说:char 能接收四个字符就是为这两个准备的
#include<stdio.h>
#include<stdlib.h>
int main(){
char a = 'a';
char b = '\141'; //八进制转化对应的ASCII表
char c = '\x61';//16进制对应的ASCII表
printf("%c\n", a); //a
printf("%c\n", b); //a
printf("%c\n", c); //a
system("pause");
return 0;
}
这三种对 char 的赋值都是正确的,在c语言中char大小只有1字节,这点是固定的。故就不存在输入多个字符的情况,转义符也不过是特殊的转换成一个字符。
在其他环境下,这样写是会报错的,这是一种错误写法。