C语言基础—数据类型和规范

news2024/11/16 9:26:40

基本的数据类型和规范


C语言基础—数据类型和规范

  • 🔜 首先 C 语言所允许的合法符
  • ❗ 数据类型和关键字图示
    • ❗❗ string 不是C语言关键字
    • 🤔 关于关键字更多的参考
  • ⚛ 常量与变量
    • 常量定义和分类
      • 指数表示法
      • 字符常量的转义字符
    • 变量定义
      • ❗变量(标识符)的命名规范
  • 整数类型及其分类
  • 浮点型类型及其分类
  • 字符型及其ASCII码表
    • 🎬️ ASCII码表快速记忆内容
      • ASCII表规则记忆
      • ASCII码表分三部分
      • 参考地址
  • 字符串型定义
  • 字符串型常量与字符型区别
  • 字符串常量


🔜 首先 C 语言所允许的合法符

字母:A-Z, a-z
数字:0-9
特殊符号:~`!@#%^&*()_-+=|{}[]:;"'<>,.?/$

❗ 数据类型和关键字图示

  • 数据类型:
    Alt
  • C语言中的关键字包括:

在这里插入图片描述

上述关键字是 C 语言中最基本的关键字,在大多数情况下,都是必须使用的。
但是,C 语言也有一些扩展关键字,这些关键字只在特定的编译器或环境中才能使用。例如,_Bool、_Complex 和 _Imaginary 等关键字是 C99 标准的


这里需要注意一下

❗❗ string 不是C语言关键字

C语言中没有 string ,要想在C语言中使用字符串,就要在头文件里定义#include<string.h>(引用)而字符串在c++里的定义是#include<string>

在C/C++中使用字符串也就是定义时不一样,其他的都一样。

string 是字符串,char是单个的字符。

  • string相当于一个容器,char可以放在里面。
  • string有结束符’\n’,char是没有的。
  • string是c++里的,不是c里的。
  • 用string存储字符串时,不用设定字符串的长度,而char要设定。
  • 还有就是,string有很强很方便的功能,比如可以方便的赋值,方便的比较大小。

🤔 关于关键字更多的参考

  • C语言中32个关键字详解
  • C语言的32个关键字和9种控制语句

⚛ 常量与变量

常量定义和分类

  • 常量

常量是指在程序运行过程中,其值不发生变化的量。常量的分类如下图所示:

字面常量在程序中直接出现的常数,如 10、20、“hello” 等
符号常量在程序中用一个名字来表示常量值,如 #define PI 3.1415926 等
枚举常量在程序中用枚举类型来表示常量值,如 enum color {red, green, blue} 等
const 常量在程序中用 const 关键字来声明的常量,它的值在编译时被确定,在程序运行期间不能被改变。

在当前阶段,我们的讨论仅限于基本常量(字面常量),即整型常量、浮点型常量和字符型常量等。

Alt


指数表示法

由于计算机无法表示上角和下角,所以规定以字母 e 或者 E 代表以 10 为底的指数。

如 32.23e3(表示 32.23*10^3),-323.34e-6(表示 -323.34 * 10^-6)

注意:e 或者 E 之前必须有数字,且 e 或者 E 后面必须为整数,不能是 e3 或者 12e4.1 这种形式。


字符常量的转义字符

在 C 语言中,转义字符是一种特殊的字符,它用来表示一些不能直接输入的字符,如回车、退格、换行等。

转义字符由一个反斜杠 () 和一个字母或符号组成如 \n、\r、\t 等

下面是一些常用的转义字符:

字符含义
\a响铃,表示输出文本时产生响铃声。
\b退格,表示输出文本时光标向左移一个字符的位置。
\f换页,表示输出文本时光标换到下一页。
\n换行,表示输出文本时光标换行。
\r回车,表示输出文本时光标换行并回到行首。
\v垂直制表
\t水平制表(右移 8 格)
\\反斜杠,表示一个普通的反斜杠字符。
\"双引号,表示一个普通的双引号字符。
\'单引号,表示一个普通的单引号字符。
\add3 位 8 进制数代表的字符

C 语言中的转义字符并不止上述提到的几种,还有其他一些常用的转义字符,包括:

\?:问号,表示一个普通的问号字符。
\0:空字符,表示一个空字符,可以用来结束字符串。
\ooo:八进制数,表示一个八进制字符。
\xhh:十六进制数,表示一个十六进制字符。

变量定义

  • 变量

变量代表一个有名字的、具有特殊属性的存储单元。它可以用来保存数据。变量的值是可以改变的。

  • 定义是 : <类型名称> <标识符>

例如:

int a; int b; int a,b; int price; int amount; …
int 代表定义的变量是整数类型。 后面的是变量名字也就是标识符


❗变量(标识符)的命名规范

  • 变量的命名规定如下:C语言规定标识符只能由 字母、数字和下划线三种字符组成,并且第一个字符必须为字母或下画线

例如: ¥ qa,1ew,#22 这些都是非法的标识符。
sum,_total, month, Student name, lotus_1_2_3, BASIC这些是合法的

  • 注意:C 语言中的标识符是区分大小写的,也就是说,标识符 myVariable 和标识符 myvariable 是两个不同的标识符。

整数类型及其分类

整数类型的取值范围取决于该类型所占的存储空间大小。例如,在C语言中,整型变量可以是short、int或long,分别占用2、4或8个字节的存储空间。

在大多数编程语言中,整数类型通常分为以下几种:

  • 整型(int):这是最常用的整数类型,通常是一个 4 字节(32 位)整数,取值范围大约为 -2,147,483,648 到 2,147,483,647。

  • 短整型(short):这是一个较小的整数类型,通常是一个 2 字节(16 位)整数,取值范围大约为 -32,768 到 32,767。

  • 长整型(long):这是一个较大的整数类型,通常是一个 8 字节(64 位)整数,取值范围大约为 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。

  • 无符号整型(unsigned):这是一种特殊的整数类型,它只能表示非负整数。例如,unsigned int 可以表示 0 到 4,294,967,295 之间的整数。

在不同的语言中,整数类型的名称可能略有不同,但它们的基本概念是相同的。


浮点型类型及其分类

浮点数类型是用来表示带有小数部分的数字的数据类型。浮点数类型通常包括:

  • 单精度浮点型(float):这是一种较小的浮点数类型,通常是一个 4 字节(32 位) 浮点数,精度约为 6 位小数。

  • 双精度浮点型(double):这是一种常用的浮点数类型,通常是一个 8 字节(64 位) 浮点数,精度约为 15 位小数。

  • 长双精度浮点型(long double):这是一种较大的浮点数类型,通常是一个 16 字节(128 位)浮点数,精度约为 19 位小数。

总结如下表:
在这里插入图片描述

浮点数类型的名称也可能因编程语言而异,但它们的基本概念是相同的。


字符型及其ASCII码表

也就是单个字符,char型一般以 1 个字节(8 位) 来存放一个字符。

字符型数据在存储时,并不是把该字符本身存放到内存单元中,而是把该字符相应的 ASCII 码值存放到该存储单元中。

例如:

Alt
也就是%c输出字符型,%d可以看出它的ASCII码值:

Alt

  • 注意 :字符型数据 区分大小写,例如,字符 ‘c’ 的 ASCII 码值是 99,‘C’ 的 ASCII 码值是 67,两者并不是同一个字符。

ASCII码表:

在这里插入图片描述


🎬️ ASCII码表快速记忆内容

ASCII表规则记忆

我们仅仅要记住了一个字母或数字的 ASCII 码
(比如记住 A 为 65 , 0 的 ASCII 码为 48 ),
知道对应的大写和小写字母之间差 32。

0		--	32	按键
33		--	47	other字符
48(0x30)	--	57	0到9字符
58		--	64	other字符
65(0x41)	--	90	A到Z字符
91		--	96	other字符
97(0x61)	--	122	a到z字符
123		--	127	other字符

ASCII码表分三部分

ASCII码大致能够分作三部分組成。

  • 第一部分是:ASCII非打印控制字符。
  • 第二部分是:ASCII打印字符。
  • 第三部分是:扩展ASCII打印字符。

参考地址

ASCII表 基本记忆 – C

ASCII码表网站


字符串型定义

字符串型是一种类型,用来表示文本数据。在许多编程语言中,它是一种内置的数据类型,用来表示一串文本字符。

需要注意的是string类型在c中没有,需要引用string.h头文件。
也可以使用char *a和 char a[]数组 来声明字符串类型

  • 参考更多:
    C/C++ 字符串详记(char[], char*, string)

字符串型常量与字符型区别

  • 字符常量是由单引号括起来的,字符串常量是由双引号括起来的。

  • 字符常量只能是单个字符,字符串常量则可以含一个或多个字符

  • 在C语言中,有字符变量,但是没有字符串变量,可以用一个字符数组\指针来存放一个字符串常量

  • 字符常量1字节的内存空间。字符串常量占的内存字节数等于字符串中字节数加1增加的1个字节用来存放字符"\0"(ASCII码为0),这是 字符串结束的标志,如字符串"C program",占10个字节的内存存储(空格和"\0"各占1个字节)。


字符串常量

字符串常量是用一对双引号括起来的零个或多个字符组成的序列
如"hello",“China”,“b” 都是字符串常量。

字符串常量的存储与字符常量的存储是不同的。字符串中的每个字符占用一个字节,在存储字符串常量时还要自动在其末尾加上 ‘\0’ 作为字符串结束的标志。 我们先来一起看下 “How do you do.” 是如何存储的吧!

在这里插入图片描述
因此大家不要将字符常量和字符串常量混淆哦,‘b’ 和 “b” 是完全不同的。前者是字符常量,在内存中占用的字节数为 1;而后者是字符串常量,在内存中占用的字节数为 2,包含字符 ‘b’ 和 ‘\0’。

例如,如果先用语句char c定义字符型变量c,后令c="a"或c=“CHINA”,那么这样的赋值都是非法的,原因是不可以将字符串型常量赋值给字符型变量。C语言中没有定义字符串型变量的关键字,可以使用char *a和 char a[]数组 来声明字符串类型。


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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

『NLP学习笔记』长序列预测论文LTSF-Linear解读

长序列预测论文LTSF-Linear解读 文章目录一. 引言二. 直接多步(DMS)和迭代多步(IMS)的对比三. 基于变压器的Transformer解决方案3.1. 预处理(preprocessing)3.2. 词向量(embedding)3.3. 编码(encoder)3.4. 解码(encoder)四. 一个简单得令人尴尬的Baseline五. 代码解读5.1. 数据…

MySQL字符串索引创建方案

字符串字段添加索引 MySQL是支持前缀索引的&#xff0c;也就是说&#xff0c;你可以定义字符串的一部分作为索引。默认地&#xff0c;如果你创建索引的语句不指定前端长度&#xff0c;那么索引就会包含整个字符串。 # 包含整个字符串 alter table table_name add index index…

liteos连接器脚本隐藏的指针问题

一,数据拷贝引起的指针问题 大家想一下,一个指针指向的内存地址处的数据,假设拷贝到了另外一个地方,那么这个时候我们的指针还是指向原来的位置,那么就会导致问题。为什么提出这个问题呢?因为我们前面讲到了liteos的data段的拷贝,那么对于data段的访问的指针是不是也要…

供应Pyrene-PEG-Biotin,Biotin-PEG-Pyrene,芘丁酸-聚乙二醇-生物素

一&#xff1a;产品描述 1、名称 英文&#xff1a;Pyrene-PEG-Biotin&#xff0c;Biotin-PEG-Pyrene 中文&#xff1a;芘丁酸-乙二醇-生物素 2、CAS编号&#xff1a;N/A 3、所属分类&#xff1a;Biotin PEG Pyrene PEG 4、分子量&#xff1a;可定制&#xff0c;Pyrene-PE…

知识点15--k8s应用入门

本篇我们用上一篇知识点搭建的k8s集群&#xff0c;认识k8s的入门级使用方法&#xff0c;无法完全体现出k8s的性能&#xff0c;注意不是高级的应用。顺便说一点k8s的操作都依靠于命令&#xff0c;甚至是修改配置文件也提供了编辑命令&#xff0c;命令很像js的选择器&#xff0c;…

视频截图修复方法是什么?这些方法和步骤教会你

在日常的生活中&#xff0c;你是否会遇到过这样的情况&#xff1a;每当在观看一些视频的时候&#xff0c;看到自己喜欢的剧情片段时&#xff0c;就会想要将其截取下来留作收藏&#xff0c;但有时候可能会出现截出来的图片画面是模糊的&#xff0c;这该怎么办呢&#xff1f;其实…

MODBUS-TCP协议

modbus-tcp顾名思义是基于TCP网络连接的MODBUS协议。 和RS485总线不同&#xff0c;TCP协议是通过设备的IP地址和端口来寻址。 modbus-tcp的默认端口号是502&#xff0c;设备端作为TCP服务器监听502端口&#xff0c;主机为TCP客户端主动去连接外设。与RS485一样&#xff0c;主机…

LVI-SAM源码解析(一):论文阅读

1. 摘要 LVI-SAM是一种基于平滑化和映射实现的激光雷达-视觉-IMU紧耦合SLAM方法&#xff0c;能够实现高精度、高鲁棒性地实时状态估计和地图构建。 LVI-SAM建立于包含两个子系统的因子图上&#xff1a;视觉-IMU子系统&#xff08;VIS&#xff09;和激光-IMU子系统&#xff…

CMake中target_compile_features的使用

CMake中的target_compile_features命令用向target添加预期的编译器功能(compiler features)&#xff0c;其格式如下&#xff1a; target_compile_features(<target> <PRIVATE|PUBLIC|INTERFACE> <feature> [...]) 指定在编译给定的<target>时所需的编…

SpringBoot+Vue+kkFileView实现文档管理(文档上传、下载、在线预览)

场景 SpringBootVueOpenOffice实现文档管理(文档上传、下载、在线预览)&#xff1a; SpringBootVueOpenOffice实现文档管理(文档上传、下载、在线预览)_霸道流氓气质的博客-CSDN博客_vue openoffice 上面在使用OpenOffice实现doc、excel、ppt等文档的管理和预览。 除此之外…

linux下安装nginx

linux下安装nginx 注&#xff1a;此处需要先安装vmware&#xff0c;下载Centos8等工具&#xff0c;配置好一个虚拟机。 1、下载nginx的linux版本 2、上传至搭建好的linux环境上。 3、解压nginx压缩包 4、安装nginx编译需要的相关 安装 nginx 需要先将官网下载的源码进行编译…

Spring源码深度解析十五:@Aspect方式的AOP中篇 - getAdvicesAndAdvisorsForBean

一、前言 文章目录&#xff1a;Spring源码深度解析&#xff1a;文章目录 在上篇中我们概述了Aop 实现的逻辑&#xff0c;但是由于篇幅原因&#xff0c;我们将一部分内容拆成了中篇和下篇内容。本篇即中篇&#xff0c;内容主要是讲述 在 Bean创建过程中Aop 挑选适用于当前Bean…

html简洁风格的个人博客网站模板(源码)

文章目录1.设计来源1.1 博客首界面1.2 个人简介界面1.3 日常记录界面1.4 文章列表界面1.5 文章信息界面2.结构源码2.1 目录结构2.2 源代码源码下载作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/128288153 html简洁风格…

qtday1:2、重新手动实现对象树模型

代码段加注释 #include <iostream> #include<list> using namespace std; class A { public:list<A *> child; //创建一个链表 public:A(A *parent nullptr){if(parent !nullptr) //说明有父组件{parent->child.push_back(this); //有父组件就将该…

数商云SRM供应商系统询比价采购业务流程介绍,重塑汽修企业核心竞争力

众所周知&#xff0c;采购供应是关系企业经营效益的重要工作。在汽修行业&#xff0c;由于汽车配件的车型规格繁多&#xff0c;技术业务性强&#xff0c;各种类商品采购过程的艰难性、销售状况的复杂性等等&#xff0c;汽配采购往往容易陷入种种困境&#xff0c;极大降低汽修企…

Qt-Web混合开发-QWebEngineView加载网页最小示例(1)

Qt-Web混合开发-QWebEngineView加载网页最小示例&#x1f4a5; 文章目录Qt-Web混合开发-QWebEngineView加载网页最小示例&#x1f4a5;1、概述&#x1f4af;2、实现效果&#x1f4a6;3、实现功能&#x1f4ac;4、关键代码&#x1f4a4;5、源代码&#x1f648;更多精彩内容&…

【20天快速掌握Python】day01-Python入门

1、什么是Python&#xff1f; Python是一门解释型的编程语言&#xff0c;而且是现在世界上最流行的编程语言之一。 2、Python优缺点 优点 简单&#xff1a;Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样&#xff0c;尽管这个英语的要…

driftingblues靶机(0ok编码)

环境准备 靶机链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;oylc 虚拟机网络链接模式&#xff1a;桥接模式 攻击机系统&#xff1a;kali linux 2021.1 信息收集 1.探测目标靶机ip arp-scan -l 2.探测目标靶机开放端口和服务情况 nmap -A -sV -p- 192.168.…

SpringCloud之微服务环境搭建

目录 1、微服务介绍 1.1.微服务架构介绍 1.2.微服务架构的常见问题 1.3.微服务架构的常见解决方案 1.3.1.ServiceComb ​ 1.3.2.SpringCloud 1.3.3.SpringCloud Alibaba 2、微服务环境搭建 2.1案例准备 技术选项&#xff1a; 模块设计&#xff1a; …

pyqt5打包后的exe文件在网吧windoes7系统运行报错问题

方案一 用录屏软件录个视频&#xff0c;然后用播放软件打开逐帧查看&#xff0c;找到报错原因&#xff0c;一般是某个包导入错误&#xff0c;重新安装下对应的包。(忒麻烦) 方案二 生成的exe文件你们执行的话&#xff0c;cmd黑框肯定会一闪而过&#xff0c;但是没有关系&…