C++ char类型

char类型也是一种整型,他是专门用于存储字符(如 字母和数字)而设计的。存储程序对于计算机而言很容易,但是存储字母就是另一回事了,当然,后来便用字母的数值编码解决了。最常用的符号集是ASCLL字符集,char类型占8位,不同数值的个数满足基本字母,字符,小整数的个数。

#include <iostream>
int main()
{
using namespace std;
char ch = 'M';
int i =ch;
//打印出M的ascll码值
cout<<"The ASCLL code for"<<ch<<"is "<<i<<endl;cout<<"Add one to the character code:"<<endl;
ch = ch +1;
i = ch;
//打印M加1之后的ascll码值,以及对于的字符
cout<<"The ASCLL code for"<<ch<<"is "<<i<<endl;//用cout.put()打印ch代表的符 以及 字符常量 ‘!’
cout<<"Displaying char ch using cout.put(ch):"
cout.put(ch);
cout.put('!');return 0;
}

说明:
将char型变量ch初始化为M,再把M的ascll码值初始化给i,其实存储的内容都是一样的,是77。char可以看做比short还短的整型。在下面将M和他的ascll码值打印出来。
再将M+1,赋值给ch,这时ch存储的是78,而i存储的也是78,再次打印出字符以及其对应的ascll码值,是N和78.
同样适用cout,且存储的值是一样的,为什么打印出来不一样?
因为cout是智能对象,值的类型将应道cout选择如何显示值。

成员函数cout.put( )
cout是一个对象,流对象,他是一个类的特定对象,通过特定对象能够使用该类的成员函数(如cout.put())。而这个‘.’ 就是成员运算符,用于使用成员函数。
cout.put()函数提供了另一种显示字符的方法,可以替代<<运算符。
注: 这是用于历史原因,在C++的release2.0版本之前,cout打印会将字符变量显示为字符,将字符常量显示为数字,那就考虑到用字符变量存储字符常量,再打印出来。问题是,C++的早期版本和C一样,也将字符常量存储为int类型,也就是说,'M’的编码被存储到一个16位或者32位的内存中,但是,char变量一般占8位。也就是说字符常量所占位数为字符变量的一半,如果你用字符常量赋值给字符变量,就会导致,只去前面8位进行赋值。

//release2.0版本之前
cout<<'M';      //打印出ascll码值77
cout.put('M');            //打印出M

在C++的release2.0版本之后,字符常量也存储为char类型,这使得cout可以正常输出字符常量。

//release2.0版本之后
cout<<'M';      //打印出M
cout.put('M');            //打印出M

转义字符

字符名称 ASCII符号 C++代码 十进制ASCLL码值 十六进制ASCLL码值
换行符 NL(LF) \n 10 0xA
水平制表符 HT \t 9 0x9
垂直制表符 VT \v 11 0xB
退格 BS \b 8 0x8
回车 CR \r 13 0xD
振铃 BEL \a 7 0x7
反斜杠 \ \\ 92 0x5C
问号 ? \? 63 0x3F
单引号 \’ 39 0x27
双引号 " \" 34 0x22

-内容参考C++ Primer Plus

char ch = '\a';
cout<<ch<<"hello world\n";
cout<<"hello \"the world\" \n  !!!";

输出:
hello “the world”
!!!
signed char和unsigned char
signed char和unsigned char若表示数值范围,signed char表示范围为0~255,unsigned char表示范围为-128~127,。
wcha_t
在字符集无法用8位字节表示的时候,如日文汉字系统,C++可以使用较大的拓展字符集,这时wcha_t(宽字符类型),可以表示拓展字符集,他也是一种整数类型,他有足够的空间,去表示拓展字符集。
对于wchat_t的输出和输入,iostream中用wcin和wcout来对应处理wcha_t流。对于宽字符常量和宽字符串可以通过在前面添加前缀L来表示。

wchar_t ch = L'P';
wcout<<L"tall"<<endl<<ch;

char16_t和char32_t
char16_t和char32_t都是无符号类型的,前者长16位,后者长32位。用前缀u表示char16_t的字符常量和字符长常量,用U表示char32_t的字符常量和字符长常量.

C++ char类型相关推荐

  1. char类型怎么输入 c语言_还没搞懂C语言指针?这里有最详细的纯干货讲解(附代码)...

    21ic综合自网络信息 指针对于C来说太重要.然而,想要全面理解指针,除了要对C语言有熟练的掌握外,还要有计算机硬件以及操作系统等方方面面的基本知识.所以本文尽可能的通过一篇文章完全讲解指针. 为什么 ...

  2. 8位alu运算器(vhdl语言)_C语言中signed char类型,能表示-128到127,为什么负数多一位?...

    初学者在学习C语言,谈到不同数据类型时,一般都能理解 unsigned 和 signed 的区别,无非就是有无符号而已.但是对于 signed 数据类型的数据范围,初学者却常常会感到迷惑. 对于 si ...

  3. 数据库中的字段varchar类型和char类型的区别?

    数据库中的字段varchar类型和char类型的区别? 目录 数据库中的字段varchar类型和char类型的区别?

  4. E0144“const char *“ 类型的值不能用于初始化 “char *“ 类型的实体

    下面这段代码会显示E0144"const char *" 类型的值不能用于初始化 "char *" 类型的实体的报错,说明了const char* 和char ...

  5. C++中char类型的溢出问题

    C++中什么经常会运用到char类型,也会将char类型作为循环语句的循环条件,但往往这里最容易出现错误,容易出现溢出,进入死循环.这里我们就来简单介绍下为什么会出现这种情况. 首先,了解下char类 ...

  6. C语言基础(6)-char类型

    1. char常量.变量 使用单引号''引起来的就是char的常量 'a'是一个char类型的常量 "a"是一个字符串类型的常量 1是一个int型的常量 '1'是一个char型的常 ...

  7. Scanner如何接受char类型的数据

    Scanner如何接受char类型的数据 Scanner sc=new Scanner(System.in); char t =sc.next().charAt(0); System.out.prin ...

  8. 杂记(1)java读取char类型2. 大小写字母的转换3. 字符串的拼接4. 一串数字排序

    1. java读取char类型 应为java中没有nextchar();函数,所以只能先读取一行,即 Sting a=sc.nextline(); char need=a.charAt(0);//取字 ...

  9. Java基础:char类型字节占用数

    1. 前言 最近在研究InputStream.OutputStream和Reader.Writer这两大Java I/O输入输出抽象类.我们都知道对于InputStream.OutputStream是 ...

  10. java中char类型_【考点】JAVA中的char类型

    写在前面: 本周,在我们同学的刷题群里,一位同学上传了一道关于char的题,引起的不少同学的热议.热议的同时,我们也发现近乎一半的同学对char的基础知识一知半解,今天我们给大家一个浅显易懂的解释,赶 ...

最新文章

  1. 霍尔传感器与直流无刷电机换相
  2. 机器学习(MACHINE LEARNING)MATLAB进行概率统计分析
  3. docker学习笔记-为容器配置重启策略
  4. ICLR 2021 | 使用CVAE学习干扰集,增强OOD以及对抗防御的能力
  5. .NET Core 3.0中IAsyncEnumerableT有什么大不了的?
  6. 内外边距、浮动、布局相关
  7. 黑科技!两行代码完美解决:同时设置overflow-x:hidden,overflow-y:visible无效的问题...
  8. java 函数式编程 示例_Java套接字编程–套接字服务器,客户端示例
  9. .net环境下ckeditor与ckfinder中文文件链接乱码的问题
  10. 2022年上半年软考开始报名啦
  11. FreeBSD安装与配置(转)
  12. java的流间隔问题_java – SuperMemo(SM-2)的间隔重复算法
  13. C语言——解数独程序[源码]
  14. 主成分分析 PCA 线性判别分类LDA
  15. 线性表之线性表与数组的区别
  16. sql prompt 不能用
  17. PhotoShop彩色图片打印机只有四中颜色操作步骤:
  18. Android RxJava应用:优雅实现网络请求轮询(无条件)
  19. MySQL常见的面试经典108题
  20. 基于SpringBoot框架的古风乐曲网站的设计与实现 毕业设计-附源码271611

热门文章

  1. Mysql ERROR 1265 (01000): Data truncated for column ‘XXX‘ at row X
  2. 绿色数据中心空调设计 书评_书评:PHP中的实用设计模式
  3. 羊了个羊是怎么赚钱的
  4. 有限元方法入门:有限元方法简单的二维算例(三角形剖分)
  5. jbpm学习笔记(九) task活动之泳道的概念
  6. 将字符串写入文件的五种方法
  7. 玩转数据可视化之R语言ggplot2:(八)ggplot2绘制空间地理数据图
  8. Unity技术手册 - 粒子基础主模块属性-上
  9. LeetCode 974. 和可被 K 整除的子数组 | Python
  10. 【算法】只有五行的Floyd最短路算法