C语言入门系列:数据类型之字符

文章目录

        • 字符类型声明与初始化
        • 字符与单引号
        • 字符的内部表示
        • 字符类型的范围
        • 整数与字符的互换性
        • 字符变量的数学运算
        • 转义字符
        • 八进制与十六进制表示字符

字符类型声明与初始化

在C语言中,使用char关键字来声明字符类型变量。例如:

char c = 'B'; // 声明并初始化字符变量c为'B'

此代码段展示了如何声明一个字符类型变量c并赋予其值B

字符与单引号

C语言要求字符常量必须被单引号包围,如 'B'

字符的内部表示

字符在计算机内用一个字节(8位)存储,被视为整数,遵循ASCII编码。例如,字符'B'对应整数66

本质上,字符只是一种视觉效果,计算机存储的不是字符本身,而是字符对应的编码,这个编码是一个整数,称之为码点

字符类型的范围

不同系统中,字符类型的默认范围可能为-128至127或0至255,均覆盖了标准ASCII码范围。

注意,最大不能超过255,超出这个范围,无法正常显示。

int main()
{
    char a = 266; 
    printf("这个字符是:%c\n", a); // 没有266对应的字符

    return 0;
}

运行这段代码,可能会得到警告。

在这里插入图片描述

整数与字符的互换性
char c = 66; // 整数赋值给字符变量
char c = 'B'; // 直接赋值字符

上述两行代码效果相同,说明字符和相应整数之间可以互换。

字符变量的数学运算

字符类型变量间可进行数学运算,如同整数操作:

char a = 'B'; // a = 66
char b = 'C'; // b = 67
printf("%d\n", a + b); // 输出字符B和C对应的整数和,即133

这里,ab相加的结果按整数输出。

注意,字符表示有符号整数时,最大不能超过127,字符声明时超出这个范围,会出现意外的结果。


int main()
{
    char a = 133; 
    char b = 133;
    printf("这个整数是 %d\n", a + b); 

    return 0;
}

对于上述代码,预期的结果是 266,但实际运行后的结果是 -246。

这是因为133已经超出了char类型的最大表示范围,计算时会溢出,溢出后a和b的值是 -123,所以计算结果是 -246。

133的溢出分析如下:

  • 133的补码是10000101。
  • 作为char类型,133超出范围,因为此时表示有符号整数,最高位(最左边的位)是符号位,1 表示这是一个负数。
  • 对于负数,剩余的位表示该数的补码形式。
  • 补码减一得到反码,10000101减1的结果是10000100,此即为反码。
  • 根据反码得到原码的过程是这样的:除符号位外,逐位取反。故10000100的原码是11111011。
    11111011是-123的原码,即10000101是负数-123的补码。
转义字符

特殊字符,如单引号,需用反斜杠\转义:

char t = '\''; // 使用转义表示单引号字符

控制字符如换行\n,可通过转义序列表示,用于控制输出格式或执行特定操作,主要用来表示 ASCII 码定义的一些无法打印的控制字符,它们也属于字符类型的值。

\a:警报,这会使得终端发出警报声或出现闪烁,或者两者同时发生。
\b:退格键,光标回退一个字符,但不删除字符。
\f:换页符,光标移到下一页。在现代系统上,这已经反映不出来了,行为改成类似于\v。
\n:换行符。
\r:回车符,光标移到同一行的开头。
\t:制表符,光标移到下一个水平制表位,通常是下一个8的倍数。
\v:垂直分隔符,光标移到下一个垂直制表位,通常是下一行的同一列。
\0:null 字符,代表没有内容。注意,这个值不等于数字0。

八进制与十六进制表示字符

字符可以用八进制或十六进制表示:

char x = 'B';      // 直接字符赋值
char x = 66;       // 整数赋值
char x = '\102';  // 八进制表示字符B
char x = '\x42';  // 十六进制表示字符B

这四种方式都正确地初始化变量x为字符'B',展示了字符赋值的多样性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/720264.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MongoDB和AI 赋能行业应用:零售

欢迎阅读“MongoDB 和 AI 赋能行业应用”系列的第三篇。 本系列重点介绍 AI 应用于不同行业的关键用例,涵盖制造业和汽车行业、金融服务、零售、电信和媒体、保险以及医疗保健行业。 利用生成式 AI 技术(Gen AI),零售商可以创造…

【一】【网络使用小知识】使用aria2软件结合Windows PowerShell命令行快速下载文件

下载aria2软件 点击进入网址,aria2下载网址. 下载windows版本. 通过Windows PowerShell命令行使用aria2软件下载文件 通用下载文件命令行代码 aria2软件完整路径 -x 16 -s 32 -d 下载目录(文件夹) -o 文件名 下载链接路径示例,用aria2下载qq 找到aria2应用的直接地址,结合…

Python调用外部系统命令

利用Python调用外部系统命令的方法可以提高编码效率。调用外部系统命令完成后可以通过获取命令执行返回结果码、命令执行的输出结果进行进一步的处理。本文主要描述Python常见的调用外部系统命令的方法,包括os.system()、os.popen()、subprocess.Popen()等。 本文分…

EdgeOne 边缘函数—如何动态改写 M3U8 媒体文件

目前,各大主流厂商都推出了自己的边缘 Serverless 服务,如 CloudFlare Workers、 Vercel EdgeRuntime 等;腾讯云 EdgeOne 边缘函数提供了部署在边缘节点的 Serverless 代码执行环境,只需编写业务函数代码并设置触发规则&#xff0…

网上书店商城项目采用SpringBoot+Vue前后端分离技术(商家端、移动端、PC端)

项目简介: 本项目基于SpringBootVue2技术设计并实现了一个网上书店商城系统。系统的数据采用MYSQL数据库进行存储,开发工具选择为IDEA或VSCode工具。本商城系统具有前台购物功能和后台相应的信息管理。前台用户登陆注册后可以进行商品浏览、添加购物车、…

【代码随想录】【算法训练营】【第42天】 [1049]最后一块石头的重量II [494]目标和 [474]一和零

前言 思路及算法思维,指路 代码随想录。 题目来自 LeetCode。 day 42,周二,坚持一下~ 题目详情 [1049] 最后一块石头的重量II 题目描述 1049 最后一块石头的重量II 解题思路 前提:最多只会剩下一块 石头,求此…

SQL Server入门-SSMS简单使用(2008R2版)-2

环境: win10,SQL Server 2008 R2 参考: SQL Server 管理套件(SSMS)_w3cschool https://www.w3cschool.cn/sqlserver/sqlserver-oe8928ks.html SQL Server存储过程_w3cschool https://www.w3cschool.cn/sqlserver/sql…

MySQL Explain 关键字详解

概述 explain 关键字可以模拟执行 sql 查询语句,输出执行计划,分析查询语句的执行性能 使用方式如下:explain sql explain select * from t1执行计划各字段含义 1. id 如果 id 序号相同,从上往下执行如果 id 序号不同&#…

Blurry - hackthebox

简介 靶机名称:Blurry 难度:中等 靶场地址:https://app.hackthebox.com/machines/605 本地环境 靶机IP :10.10.11.19 linux渗透机IP(kali 2024.2):10.10.16.17 windows渗透机IP(windows11&#xff0…

FastAdmin后台开发框架 lang 任意文件读取漏洞复现

0x01 产品简介 FastAdmin是一款基于PHPBootstrap的开源后台框架,专为开发者精心打造。它基于ThinkPHP和Bootstrap两大主流技术构建,拥有完善的权限管理系统和一键生成CRUD等强大功能。FastAdmin致力于提高开发效率,降低开发成本,…

UltraEdit电脑版下载_UltraEdit文本编辑器中文版下载_UltraEdit 2024最新版软件安装包下载附加详细安装步骤

UltraEdit中文版是一款功能强大的文本编辑器,几乎可以满足你所有的工作需求。使用UltraEdit文本编辑器可以操作更多记事本所不能处理的工作。如:基本的编辑文本、十六进制、ASCLL码、语法加亮、代码折叠、代码单词拼写检查等、C 及 VB 指令突显等,附有 H…

ICMAN触摸芯片隔空感应演示

ICMAN高性能触摸芯片之隔空感应演示 ——手掌靠近感应盘但未触摸,芯片即可实现隔空感应,指示灯亮起。 上下左右快扫、慢扫;反应灵敏,无误触发。 产品方案设计的简单,只需要通过调整电容,即可满足客户灵敏…

安全测试必备工具——SQLMap 安装及基本应用

检测SQL注入漏洞的专用工具是安全人士工具箱的必备品。Sqlmap是由python开发的用来检测与利用SQL注入漏洞的免费开源工具。它可以确定哪些参数、标头或数据元素容易受到SQL注入的影响,以及哪些类型的攻击是可能的。本文详细讲解这款神器的安装及使用。 1、什么是SQ…

LabVIEW版本、硬件驱动和Windows版本之间兼容性

在LabVIEW应用开发和部署过程中,确保LabVIEW版本、硬件驱动和Windows版本之间的一致性和兼容性至关重要。这不仅影响程序的稳定性和性能,还关系到项目的成功实施。本文从多角度详细分析这些因素之间的兼容性问题,并提供相关建议。 兼容性考虑…

Windows 安装 java 环境

搭建java开发环境 java的产品叫JDK(java开发者工具包),必须安装JDK才能使用Java。 一、下载——java下载网址 二、安装 直接全部下一步就行,(安装路径可以更换一下)。 配置JAVA_HOME环境变量, 安装完成后…

基于 Arm 虚拟硬件实现人脸特征提取模型的部署

基于 Arm 虚拟硬件实现人脸特征提取模型的部署 文章目录 1 实验背景1.1 Arm 虚拟硬件介绍1.2 文章简介 2 实验目标3 实验前准备3.1 订阅 Arm 虚拟硬件镜像的百度智能云云服务器 BCC 实例3.2 克隆实验代码 4 实验步骤4.1 配置开发环境4.1.1 配置 CMSIS-Toolbox 环境4.1.2 配置 P…

教你一招,一键学会NAS磁盘“净身出户”的好方法!

在毕业季这个充满离别与新的开始的时刻,空气中似乎也弥漫着一种“断舍离”的氛围。就在这个特殊的季节里,我们迎来了618购物节,各种诱人的优惠活动如雨后春笋般涌现。铁威马618优惠不断!T系列部分低至六折! 在这个热闹…

MathType软件下载2024最新版_MathType官方免费下载附加详细安装步骤

MathType(数学公式编辑器)是由Design Science公司研发的一款专业的数学公式编辑工具。MathType功能非常强大,尤其适用于专门研究数学领域的人群使用。使用MathType让你在输入数学公式的时候能够更加的得心应手,各种复杂的运算符号也不在话下。 安 装 包 …

影音发烧友必入:高清先生M8 8K蓝光播放机使用体验8K播放器

影音发烧友必入:高清先生M8 8K蓝光播放机使用体验 高清先生在5.18成功举办新品8K蓝光播放机“M8”的发布会后,心心念念想尝鲜,于是果断下单了一台。 外形 收到货后,是牛皮纸包装,醒目的“高清先生”标识印在正面&…

【凤凰房产-注册安全分析报告-缺少轨迹的滑动条】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…