字符的表示

 字符类型由单引号' '包围,字符串由双引号" "包围。

//正确的写法
char a = '1';
char b = '$';
char c = 'X';
char d = ' '; // 空格也是一个字符
//错误的写法
char x = '中'; //char 类型不能包含 ASCII 编码之外的字符
char y = 'A'; //A 是一个全角字符
char z = "t"; //字符类型应该由单引号包围

说明:在字符集中,全角字符和半角字符对应的编号(或者说编码值)不同,是两个字符;ASCII 编码只定义了半角字符,没有定义全角字符。

字符的输出

输出 char 类型的字符有两种方法,分别是:

  • 使用专门的字符输出函数 putchar;
  • 使用通用的格式化输出函数 printf,char 对应的格式控制符是%c

字符与整数

  计算机在存储字符时并不是真的要存储字符实体,而是存储该字符在字符集中的编号(也可以叫编码值)。对于 char 类型来说,它实际上存储的就是字符的 ASCII 码。

  无论在哪个字符集中,字符编号都是一个整数;从这个角度考虑,字符类型和整数类型本质上没有什么区别。

  我们可以给字符类型赋值一个整数,或者以整数的形式输出字符类型。反过来,也可以给整数类型赋值一个字符,或者以字符的形式输出整数类型。

#include <stdio.h>
int main()
{
char a = 'E';
char b = 70;
int c = 71;
int d = 'H';
printf("a: %c, %d\n", a, a);
printf("b: %c, %d\n", b, b);
printf("c: %c, %d\n", c, c);
printf("d: %c, %d\n", d, d);
return 0;
}

在 ASCII 码表中,字符 'E'、'F'、'G'、'H' 对应的编号分别是 69、70、71、72。

a、b、c、d 实际上存储的都是整数:

    • 当给 a、d 赋值一个字符时,字符会先转换成 ASCII 码再存储;
    • 当给 b、c 赋值一个整数时,不需要任何转换,直接存储就可以;
    • 当以 %c 输出 a、b、c、d 时,会根据 ASCII 码表将整数转换成对应的字符;
    • 当以 %d 输出 a、b、c、d 时,不需要任何转换,直接输出就可以。

可以说,是 ASCII 码表将英文字符和整数关联了起来。

字符串

前面我们讲到了字符串的概念,也讲到了字符串的输出,但是还没有讲如何用变量存储一个字符串。其实在C语言中没有专门的字符串类型,我们只能使用数组或者指针来间接地存储字符串。

char str1[] = "http://c.biancheng.net";
char *str2 = "C语言中文网";

str1 和 str2 是字符串的名字,后边的[ ]和前边的*是固定的写法。初学者暂时可以认为这两种存储方式是等价的,它们都可以通过专用的 puts 函数和通用的 printf 函数输出。

char字符_C的更多相关文章

  1. c++ 踩坑大法好 char字符,char数组,char*

    1,基本语法 1,定义一个char字符: char hehe='a'; //单引号 2,定义一个由char字符组成的数组: char daqing[] = "abcd"; char ...

  2. 黑马程序员——C语言基础 char字符 数组

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)char类型 1)存储细节 ASCII单字节表(双字节GBK\GB2 ...

  3. 让人又爱又恨的char(字符型)

    今天来总结一下char型,平常写算法的时候对这个东西感觉都有一点绕着走,说到底还是对这部分的知识不熟悉所以有点怕他,不过以后不要怕,今天来总结一下 首先,说到字符型数据类型,char型,恩它是一种数据 ...

  4. java 接收 char字符型

    import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Scanner; public clas ...

  5. QString和char字符数组之间的转换(QTextCodec.toUnicode方法,特别注意\0的问题)

    How can I convert a QString to char* and vice versa ?(trolltech) Answer:In order to convert a QStrin ...

  6. wchar与char字符转换的探究

    在Xcode 模拟器环境下.測试wchar_t与char的转换: void convert_test() { setlocale(LC_ALL, "zh_CN.UTF-8"); c ...

  7. C++string,char* 字符数组,int类型之间的转换

    string.int 常见类型之间相互转换 int & string 之间的转换 C++中更多的是使用流对象来实现类型转换 针对流对象 sstream实现 int,float 类型都可以实现 ...

  8. C语言 使用char字符实现汉字处理

    系统:windows 64 编译器:gcc version 8.1.0 (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 文本编辑器:notepa ...

  9. MFC中输入框的文本转换为char[]字符数组类型

    在MFC的输入框中得到输入字符串用如下形式: CString v_inputstring; (( CEdit *) GetDlgItem (IDC_EDIT1 ))-> GetWindowTex ...

  10. C语言:打印所有char字符

    #include <stdio.h> int main() { int aa; char bla; for(aa=0;aa<=255;aa++) { if(aa%10==0 and ...

随机推荐

  1. 企业签名打包错误+[MICodeSigningVerifier _validateSignatureAndCopyInfoForURL:withOptions:error:]:

    一.问题现象 debug连接真机情况下面,编译正常,调试也是正常的. 使用企业签名命令行编译打包 xcodebuild -target dailybuildipa -configuration Dai ...

  2. Symbol.for()

    当我们在不同的模块或文件中需要共享一个特定的Symbol时,可以使用Symbol.for()方法来实现. 假设我们有两个模块,分别是module1.js和module2.js.我们希望在这两个模块中使 ...

  3. lxl学长讲课笔记

    lxl 学长讲课笔记 常数种可能性的状态 通过预先处理多种状态的信息,从而快速的转换状态. 经典操作:flip. 分析信息的思路 利用线段树 利用线段树的时候,如何合并两个分支区间的信息,我们需要有如 ...

  4. OpenWrt安装配置Tailscale

    什么是tailscale? Tailscale就是基于Wireguard的一个联网工具,无需公网地址,通过去中心化,实现各个节点之间点对点的连接.配置简单友好,支持的各类平台和客户端. 相比较其他组网 ...

  5. 如果redis没有设置expire,他是否默认永不过期

    如果redis没有设置expire,他是否默认永不过期?默认是的 通过EXPIRE key seconds 命令来设置数据的过期时间.返回1表明设置成功,返回0表明key不存在或者不能成功设置过期时间 ...

  6. https请求,Java代码忽略https证书:解决No subject alternative names present问题

    https请求,Java代码忽略https证书:解决No subject alternative names present问题 package com.test.utils; import org. ...

  7. kooder安装及本地搜索git仓库代码

    kooder安装及本地搜索git仓库代码 需求背景:如果需要从Git代码仓库查询某个配置项做批量的更新替换,如果一个一个找不合适且容易遗漏,需要借助第三方工具来模糊查询来实现. 1.下载及文档地址ht ...

  8. JSONPATH-阿里和jayway的实现测试

    业务业务的需要,所以想找一个从对象中获取属性的工具. 搜了搜发现由阿里和jayway的实现,又花费了一些时间了解和练习,总结了一些要点: 阿里的可能快一些,但考虑到完备性,也许选择jayway更好一些 ...

  9. python重拾第九天-进程、线程、协程

    本节内容 操作系统发展史介绍 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者 ...

  10. python重拾第十一天-RABBITMQ队列

    安装python rabbitMQ module pip install pika 官网 https://pypi.python.org/pypi/pika 安装rabbit-server服务,cen ...