2.1 数据类型-常量-变量(整型-浮点-字符)

目录

1 数据类型

1.1 关键字

2 常量

3 变量

3.1 命名规则

4 整形数据

4.1 符号常量

4.2 整型变量

5 浮点型数据

5.1 浮点型常量

5.2 浮点型变量

6 字符型数据

6.1 字符型常量

转义字符

6.2 字符数据在内存中的存储形式及其使用方法

6.3 ASCII码表

7 字符串型常量


1 数据类型

裁缝做衣服时需要用到化纤、纯棉、丝绸等不同类型的布料,那么程序员在编写程序时需要用到哪些数据类型呢?数据类型的分类如下图所示:

1.1 关键字

C语言中有许多关键字(32个),在后面的章节中将详细介绍这些关键字(不用去记),这里罗列它们的目的是让大家知道C语言中的关键字有哪些,以避免命名变量时与关键字重名(完全不用担心,CLion开发环境重名后会自动提醒大家的)。下表列出了C语言中的关键字:


2 常量

常量是指在程序运行过程中,其值不发生变化的量。常量又可分为整型、实型(也称浮点型)、字符型和字符串型,如下图所示。

整型常量、实型常量、字符型常量是在编译时可以直接编入代码段的常量

例如,在字符串"你好"中,双引号中间的汉字就是字符串型常量,无论双引号中间的内容是ASCII码字符,还是汉字或其他国家的文字等,都是字符串型常量(考研不会考汉字的字符串常量,无需掌握)。


3 变量

变量代表内存中具有特定属性的一个存储单元,它用来存放数据,即变量的值。这些值在程序的执行过程中是可以改变的。

变量名实际上以一个名字代表一个对应的存储单元地址。编译、链接程序时,由编译系统为每个变量名分配对应的内存地址(就是空间)

从变量中取值实际上是通过变量名找到内存中存储单元的地址,并从该存储单元中读取数据,如下图所示:

3.1 命名规则

变量的命名规定如下:

        C语言规定标识符只能由字母、数字和下画线三种字符组成,并且第一个字符必须为字母或下画线(数字不能开头)。

        标识符是区分大小写的,编译系统认为大写字母和小写字母是不同的字符,因此C语言要求对所有用到的变量做强制定义,即“先定义,后使用”。同时在选择变量名和其他标识符时,应尽量做到“见名知意”,即选择具有含义的英文单词(或其缩写)作为标识符。

        标识符不能是C语言的关键字(如int、for、if等)。

以下是一些有效的C语言标识符示例:

  • myVariable
  • _privateVar
  • MaxValue
  • count123
  • sum
  • _total,
  • month
  • Student_name
  • lotus_1_2_3
  • BASIC

以下是一些无效的C语言标识符示例:

  • 123var (以数字开头)
  • for (是关键字)
  • int (也是关键字)
  • my-var (包含非法字符-)
  • M.D.John(包含非法字符.)
  • ¥123(包含非法字符¥)
  • a>b(包含非法字符>)

4 整形数据

4.1 符号常量

我们来看下面的例子:

#include <stdio.h>
//符号常量

#define PI 3+2

int main() {
    //PI = 8; //不可以修改常量的值,会报错

    int i = PI * 2; // PI会被替换为3+2,所以i=3+2*2=7
    printf("i=%d\n", i); // 输出i的值: i=7
    return 0; // main函数应返回0表示成功结束
}

最终的输出结果是7,原因是符号常量PI是直接替换的效果,因此不可以写PI=8

4.2 整型变量

定义一个整型变量时要使用关键字int,掌握 int i 足以应对初试,后面高级阶段会详细讲解不同类型整型变量,没有时间的同学可以不掌握高级,变量i是4个字节

#include <stdio.h>
//符号常量

#define PI 3+2

int main() {
    //PI = 8; //不可以修改常量的值
    int i = PI * 2; // PI会被替换为3+2,所以i=3+2*2=7
    printf("i=%d\n", i); // 输出i的值: i=7

    //sizeof可以用来计算某个变量的空间大小
    printf("i size = %d\n", sizeof(i));//i size = 4
    return 0;
}

5 浮点型数据

5.1 浮点型常量

表示浮点型常量的形式有两种,如下表所示,其中e代表10的幂次,幂次可正可负。

注意:字母e (或E)之前必须有数字,且e后面的指数必须为整数

正确示例:1e3、1.8e-3、-123e-6、-.1e-3(0可以省略,等价于-1e-4)。
错误示例:e3、2.1e3.5、.e3、e.

5.2 浮点型变量

通过 float f 来定义浮点变量,f占用4个字节的空间

#include <stdio.h>

int main() {
    float f= 3e-3;
    printf("f=%f\n",f); //f=0.003000
    printf("float size = %d\n", sizeof(float));//float size = 4
    printf("double size = %d\n", sizeof(double));//double size = 8
    return 0;
}

6 字符型数据

6.1 字符型常量

单引号括起来的一个字符是字符型常量,且只能包含一个字符。

例如:'a'、'A'、'T'、'"是正确的字符型常量,而'abc' 、 "a"、""是错误的字符型常量。

转义字符

下表中给出了各种转义字符及其作用。以“\”开头的特殊字符称为转义字符,转义字符用来表示回车、退格等功能键。

6.2 字符数据在内存中的存储形式及其使用方法

字符型变量使用关键字char进行定义,一个字符型变量占用1字节大小的空间。

一个字符常量存放到一个字符型变量中时,实际上并不是把该字符的字型放到内存中,而是把该字符的ASCII码值放到存储单元中。打印字符型变量时,如果以字符形式打印,那么计算机会到ASCI码表中查找字符型变量的ASCII码值,查到对应的字符后会显示对应的字符,如下图所示。

这样,字符型数据和整型数据之间就可以通用。字符型数据既可以以字符形式输出,又可以以整数形式输出,还可以通过运算获取想要的各种字符,请看下面例子:

#include <stdio.h>

int main() {
    char c = 'A'; // 假设我们有一个大写字母
    printf("%c\n", c);  //A
    printf("%d\n", c);  //65
    printf("%c\n", c+32);//a
    printf("%d\n", c+32);//97
    
    return 0;
}

对于字符型变量,无论是赋ASCII码值还是赋字符,使用%c打印输出时得到的都是字符,使用%d打印输出时得到的都是ASCII码值。将小写字母转换为大写字母时,由ASCII码表发现小写字母与大写字母的差值为32,因此将c减去32就可以得到大写字母A。

6.3 ASCII码表


7 字符串型常量

字符串型常量是由一对双引号括起来的字符序列。例如,"How do you do."、"CHINA"、"a"和"$123.45"是合法的字符串型常量,我们可用语句 printf("How do you do.")输出一个字符串。但要注意的是, 'a'是字符型常量,而"a"是字符串型常量,二者是不同的。

例如,如果先用语句char c定义字符型变量c,后令c="a"或c="CHINA",那么这样的赋值都是非法的,原因是不可以将字符串型常量赋值给字符型变量。C语言中没有定义字符串型变量的关键字,介绍字符数组时我们将详细讲解如何存放字符串。


C语言规定,在每个字符串型常量的结尾加一个字符串结束标志,以便系统据此判断字符串是否结束。C语言规定以字符 '\0' 作为字符串结束标志。
例如,字符串型常量"CHINA"在内存中的存储结果如下图所示,它占用的内存单元不是5个字符,而是6个字符,即大小为6字节,最后一个字符为 '\0' 。然而,在输出时不输出'\0',因为'0'无法显示。

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

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

相关文章

吉大计科软件工程个人错题

文章目录 Chapter oneChapter two——软件过程Chapter three——可行性研究Chapter four——需求分析Chapter five——总体设计Chapter six——详细设计Chapter seven——实现Chapter eight——软件维护Chapter nine——软件项目管理Chapter ten——面向对象一些不会的题一些可…

windows安装SQL Server

1、下载 下载网页&#xff1a;SQL Server 下載 | Microsoft 2022版下载地址&#xff1a;https://go.microsoft.com/fwlink/p/?linkid2215158&clcid0x404&culturezh-tw&countrytw 下载结果&#xff1a;SQL2022-SSEI-Dev.exe 打开选第三个&#xff0c;下载介质&…

二叉树——经典练习题

目录 前言&#xff1a; 一、单值二叉树 题目描述&#xff1a; 思路分析&#xff1a; 代码实现&#xff1a; 二、二叉树最大深度 题目描述&#xff1a; 思路分析&#xff1a; 代码实现&#xff1a; 三、检查两颗树是否相同 题目描述&#xff1a; 思路分析&#xff1a; 代…

AI图书推荐:ChatGPT解码—人工智能增强生活指南

《ChatGPT解码—人工智能增强生活指南》&#xff08;ChatGPT Decoded. A Beginners Guide to AI-Enhanced Living &#xff09;是一本由 大卫维恩斯&#xff08;David Wiens &#xff09;所著的书籍&#xff0c;旨在帮助读者了解并有效利用GPT-4语言模型这一强大工具来提升日常…

OceanBase SQL 诊断和调优实践——【DBA从入门到实践】第七期

数据库作为绝大多数应用系统储存数据的核心系统&#xff0c;在用户系统需要访问数据时&#xff0c;有着至关重要的作用。在这些交互中&#xff0c;SQL 语言是应用与数据库系统之间“沟通”的桥梁&#xff0c;它负责将应用的指令传达给数据库。因此&#xff0c;SQL 的性能好坏直…

网络工程师---第三十八天

ISIS&#xff1a; ISIS含义&#xff1a;中间系统到中间系统IS-IS。 ISIS特点&#xff1a;①内部网关协议IGP&#xff08;Interior Gateway Protocol&#xff09;&#xff0c;用于自治系统内部&#xff1b; ②IS-IS也是一种链路状态协议&#xff0c;使用最短路径优先SPF算法进…

Jenkins 流水线(Pipeline)详解

大家好&#xff0c;Jenkins 流水线&#xff08;Pipeline&#xff09;是一种可编排的持续集成和交付&#xff08;CI/CD&#xff09;方法&#xff0c;它以代码的方式定义整个软件开发过程中的构建、测试和部署流程。接下来就跟大家分享一下Jenkins 流水线&#xff08;Pipeline&am…

云计算-基础设施和管理机制(Infrastructure and Management Mechanisms)

逻辑网络边界&#xff08;Logical Network Perimeter&#xff09; 逻辑网络边界是软件控制的虚拟网络&#xff0c;它是物理网络的一部分。其主要思想是隔离逻辑网络&#xff0c;防止不希望的访问&#xff0c;同时仍然为合法用户提供访问权限。下图显示了云系统中一个简单的逻辑…

【Qt】Qt入门

思维导图 学习目标 这一系列是学习Qt&#xff0c;在C中&#xff0c;会发现有不少岗位的要求是熟悉Qt&#xff0c;所以Qt的学习是不能推迟的。 一、Qt的概述 1.1 Qt的特点 Qt是一个跨平台的C应用程序开发框架&#xff1a; 具有短平快的优秀特质&#xff1a;投资少&#xff0…

每日练习——同余方程以及格雷码

同余方程 题目描述 运行代码 #include<iostream> #define ll long long using namespace std; ll exgcd(ll a, ll b, ll& x, ll& y) {if (!b)return x 1, y 0, a;ll d exgcd(b, a % b, y, x);y - a / b * x;return d; } int main() {ll a, b, x, y;cin >…

【教学类-58-05】黑白三角拼图05(2-10宫格,每个宫格随机1张-6张,带空格纸,1页3张黑白3张白卡)

背景需求&#xff1a; 【教学类-58-04】黑白三角拼图04&#xff08;2-10宫格&#xff0c;每个宫格随机1张-6张&#xff0c;带空格纸&#xff0c;1页6张黑白&#xff0c;1张6张白卡&#xff09;-CSDN博客文章浏览阅读582次&#xff0c;点赞16次&#xff0c;收藏3次。【教学类-58…

Kafka 安装教程和基本操作

一、简介 Kafka 是最初由 Linkedin 公司开发&#xff0c;是一个分布式、分区的、多副本的、多订阅者&#xff0c;基于 zookeeper 协调的分布式日志系统&#xff08;也可以当做 MQ 系统&#xff09;&#xff0c;常见可以用于 web/nginx 日志、访问日志&#xff0c;消息服务等等…

C++之lambda函数与std::bind区别及用法实例(二百八十)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

AI网络爬虫-从当当网批量获取图书信息

工作任务和目标&#xff1a;用户输入一个图书名称&#xff0c;然后程序自动从当当网批量获取图书信息 查看相关元素在源代码中的位置&#xff1a; 第一步&#xff1a;在deepseek中输入提示词&#xff1a; 你是一个Python爬虫专家&#xff0c;一步步的思考&#xff0c;完成以下…

5.26机器人基础-DH参数 正解

1.建立DH坐标系 1.确定Zi轴&#xff08;关节轴&#xff09; 2.确定基础坐标系 3.确定Xi方向&#xff08;垂直于zi和zi1的平面&#xff09; 4.完全确定各个坐标系 例子&#xff1a; 坐标系的布局是由个人决定的&#xff0c;可以有不同的选择 标准坐标系布局&#xff1a; …

HAL库LED点灯

一、搭建开发环境 &#xff08;一&#xff09;安装MDK5 具体安装请参照下面链接&#xff1a;如何开始一个stm32的简单程序的编译_stm32程序编译-CSDN博客 &#xff08;二&#xff09;安装Jdk 由于STM32CubeMX需要用到JAVA&#xff0c;因此需要安装jdk环境。 jdk官网下载链接…

素数判断的奥秘与编程实践

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、素数定义的深入理解 二、非素数的例子与思考 三、素数判断的编程实现 1. 穷举法判断素…

protobuf —— 认识和安装

protobuf —— 认识和安装 什么是序列化和反序列化有哪些常见的什么是序列化和反序列化工具Protobuf安装安装依赖开始安装 连接动态库一些遗留问题 我们今天来看一个序列化和反序列化的工具&#xff1a;protobuf。 什么是序列化和反序列化 序列化&#xff08;Serialization&a…

基于SpringBoot和Mybatis实现的留言板案例

目录 一、需求及界面展示 二、准备工作 引入依赖 .yml文件相关配置 数据库数据准备 三、编写后端代码 需求分析 代码结构 Model Mapper Service Controller 前端代码 四、测试 一、需求及界面展示 需求&#xff1a; 1. 输入留言信息&#xff0c;点击提交&…

MySQL:图文超详细教程MySQL5.7下载与安装

一、前言 MySQL 5.7 是一个重要的数据库管理系统版本&#xff0c;它带来了多项改进和新特性&#xff0c;本文将超详细的带大家手动安装一下MySQL5.7。 二、下载MySQL5.7版本 MySQL5.7安装包 链接&#xff1a;https://pan.baidu.com/s/1lz5rp9PwfyeHzkEfI_lW6A 提取码&#…