C语言基础教程 之 字符型:char

本文深入探讨了C语言中的字符型变量定义、输出及转义字符等核心概念,包括字符变量的ASCII编码原理,通过键盘输入赋值的方法,以及八进制、十六进制转义字符的使用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


C语言基础教程目录:https://blog.youkuaiyun.com/SparkLee2013/article/details/85229406


1、字符型变量的定义和输出

字符型变量用于存储一个单一字符,使用char关键字进行定义,每个字符型变量占用1个字节。给字符型变量赋值时,使用一对英文半角单引号('')将字符常量括起来。

字符变量实际上并非将字符本身存放到变量内存单元中,而是将此字符对应的ASCII编码(一个十进制数值)存放到变量内存存储单元中;char的本质其实就是一个1字节大小的整数。

#include <stdio.h>

void main() {
    // 定义一个字符型变量
    // 注:字符'0'在ASCII码表中对应的十进制数字为48,故它与整型0 (int a = 0)是不一样的
    char c = '0';

    // 使用占位符"%c"输出一个字符型变量
    printf("c = %c\n", c);

    // 输出字符变量的ASCII码
    printf("Decimal c = %d\n", c);     // 字符变量对应的十进制数值
    printf("Octal c = %o\n", c);       // 字符变量对应的八进制数值
    printf("Hexadecimal c = %x\n", c); // 字符变量对应的十六进制数值

    // 字符型变量与十进制数进行运算时,会自动转换成十进制数参考运算
    printf("c - 10 = %d\n", c - 10);

    // 可以将ASCII码表的十进制数值输出为字符
    printf("97 is %c\n", 97);
}


# 输出结果:
c = 0
Decimal c = 48
Octal c = 60
Hexadecimal c = 30
c - 10 = 38
97 is a

字符的表示有四种形式:1.字符本身、2.字符对应ASCII码表十进制值,3.字符对应ASCII码表八进制值,4.字符对应ASCII码表十六进制值

#include <stdio.h>

void main() {
    char c1 = 'a';    // 字符本身
    char c2 = 97;     // 字符对应ASCII码表十进制值
    char c3 = '\141'; // 字符对应ASCII码表八进制值
    char c4 = '\x61'; // 字符对应ASCII码表十六进制值
    printf("result: %c, %c, %c, %c", c1, c2, c3, c4);

    printf("\n\n");

    char x1 = '\\';   // 字符本身
    char x2 = 92;     // 字符对应ASCII码表十进制值
    char x3 = '\134'; // 字符对应ASCII码表八进制值
    char x4 = '\x5c'; // 字符对应ASCII码表十六进制值
    printf("result: %c, %c, %c, %c", x1, x2, x3, x4);
}

# 输出结果:
result: \, \, \, \

result: a, a, a, a

2、转义字符

转义字符含义ASCII码值(十进制)
\a警报007
\b退格(BS),将当前位置移到前一列008
\f换页(FF),将当前位置移到下页开头012
\n换行(LF),将当前位置移到下行开头010
\r回车(CR),将当前位置移到本行开头013
\t水平制表符(HT),跳到下一个TAB位置009
\v垂直制表符(VT)011
   
\\代表一个反斜杠字符092
\'代表一个单引号字符039
\"代表一个双引号字符034
\?代表一个问号字符063
\ddd八进制转义字符,d范围:0 ~ 73位八进制
\xhh十六进制转义字符,h范围:0~9,a~f,A~F3位十六进制
#include <stdio.h>

void main() {
    // 八进制转义字符(字符a的八进制为141)
    printf("octal 141 is: %c\n", '\141');

    // 十六进制转义字符(字符z的十六进制为7A)
    printf("hexadecimal 7A is: %c\n", '\x7A');

    // 反斜杠转义字符(反斜杠的十进制为92,八进制为134,十六进制为5C)
    printf("backslash is: %c %c %c %c\n", '\\', 92, '\134', '\x5C');

    // 单引号转义字符
    printf("single quote is: %c %c\n", '\'', 39);

    // 双引号转义字符
    printf("double quote is: %c %c\n", '\"', 34);

    // 问号转义字符
    printf("question mark is: %c %c\n", '\?', 63);
}

# 输出结果:
octal 141 is: a
hexadecimal 7A is: z
backslash is: \ \ \ \
single quote is: ' '
double quote is: " "
question mark is: ? ?

3、通过键盘输入赋值

#include <stdio.h>

void main() {
    // 定义一个字符型变量
    char a;

    // 通过键盘输入对变量a进行赋值,使用占位符"%c",'&'是取地址操作
    scanf("%c", &a);

    // 打印变量a的值
    printf("a = %c\n", a);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值