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

news2024/9/24 1:14:53

目录

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'无法显示。

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

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

相关文章

homebrew安装mysql的一些问题

本文目录 一、Homebrew镜像安装二、mac安装mysql2.1、修改mysql密码 本文基于mac环境下进行的安装 一、Homebrew镜像安装 Homebrew国内如何自动安装&#xff0c;运行命令/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 会…

2024年,游戏行业还值得进入吗?

来自知乎问题“2024年&#xff0c;游戏行业还值得进入吗&#xff1f;”的回答。 ——原问题描述&#xff1a;从超小厂执行策划做起&#xff0c;未来有前途吗&#xff1f; 展望2024年&#xff0c;国内外的游戏市场环境或将变得更加复杂&#xff0c;曾经那个水大鱼大的时代过去了…

ArduPilot开源飞控之MAVProxy深入研读系列 - 2蜂群链路

ArduPilot开源飞控之MAVProxy深入研读系列 - 2蜂群链路 1. 源由2. 蜂群链路2.1 拓扑结构2.2 设备标识2.3 命令列表 3. 蜂群应用4. 总结技术进步未来挑战 5. 参考资料 1. 源由 MAVProxy的一个关键功能是它能够通过UDP将来自无人机的消息转发到网络上的多个其他设备上的地面站软…

AI绘画图生图有什么用?

随着AI渗透到我们生活中的各个角落&#xff0c;AI绘画图生图的出现&#xff0c;更是在艺术领域引起了广泛的关注和讨论。那么&#xff0c;AI绘画图生图究竟有什么作用呢? 首先&#xff0c;AI绘画图生图能够极大地提高创作效率。传统的绘画过程需要艺术家们花费大量的时间和精力…

uni-app实现页面之间的跳转传参(八)

界面之间的参数传递在 开发中经常会用到,这节主要将一下uni-app开发应用是的传参情况。如下图所示,我的一级界面将点检分成三类:日点检、周点检和年保养;在点击相应的会导航到相应的功能。 在uni-app中常用的方法有uni.navigateTo(OBJECT)、uni.redirectTo(OBJECT);简单的…

一文带你学会如何部署个人博客到云服务器,并进行域名备案与解析!

哈喽&#xff0c;大家好呀&#xff01;这里是码农后端。之前我给大家介绍了如何快速注册一个自己的域名&#xff0c;并创建一台自己的阿里云ECS云服务器。本篇将介绍如何将个人博客部署到云服务器&#xff0c;并进行域名备案与解析。 1、域名备案 注册了域名并购买了云服务器之…

牛客循环5.27

1006 错误代码 不知道原因&#xff0c;有大佬解答一下吗 ac代码 1007 错误代码 ac代码

AI音乐神器Suno V3.5进化全解析:功能升级吊炸天,让音乐创作更简单!

前言 目前&#xff0c;suno的v3.5版本已经向Pro和Premier会员开放&#xff0c;从更新当天到现在我已经使用了近2000积分&#xff0c;接下来我将v3.5的使用体验和与旧版本v3进行比较&#xff0c;让大家更直观的感受到v3.5的强大。 其中一个最屌的功能&#xff0c;我放在最后介绍…

linux下cp和mv命令显示进度条

1.查看当前系统下coreutils工具包的版本号&#xff1a; [rootk8s-master ~]# rpm -qa | grep -w coreutils coreutils-8.22-24.el7_9.2.x86_64当前版本为8.22。 因为cp 和 mv 命令由 coreutils 软件包提供&#xff0c;所以需要重新下载 coreutils 软件包配置补丁 2.下载core…

创意学习剪辑利器:一键添加动图水印,轻松提升视频专业度与创意新境界!

在数字化时代&#xff0c;视频已成为我们生活中不可或缺的一部分。无论是学习分享、工作展示还是生活记录&#xff0c;视频都以其直观、生动的形式&#xff0c;赢得了广大用户的喜爱。然而&#xff0c;如何在众多的视频中脱颖而出&#xff0c;展现出自己的专业度和创意&#xf…

CI/CD:持续集成/持续部署

1. 安装docker、docker-compose # 安装Docker yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sed -i sdownload.docker.commirrors.aliyun.com/docker-ce /…

【AD21】原理图PDF文件的输出

原理图PDF文件可以共享给团队成员&#xff0c;用于设计审核、讨论和协同工作。 菜单栏中点击文件->智能PDF。 在弹出的界面点击Next&#xff0c;勾选当前项目&#xff0c;修改文件名&#xff0c;避免与制造装备图PDF文件重名将其覆盖&#xff0c;点击Next。 只输出原理图…

谷歌AI搜索功能“翻车”,用户体验引担忧

近期&#xff0c;谷歌对其搜索引擎进行重大更新&#xff0c;推出了全新AI搜索功能“AI Overview”&#xff0c;试图通过人工智能技术提供更智能便捷的搜索体验&#xff0c;并追赶微软和OpenAI等竞争对手。然而事与愿违&#xff0c;这项备受期待的功能上线后却频频出错&#xff…

实现一个自定义 hook,用于强制刷新当前组件

写在前面 在 react 中&#xff0c;如果 state 数据发生变化&#xff0c;我们知道&#xff0c;会重新渲染该组件。 但是这个前提是我们需要依赖 state 数据的变化&#xff0c;那比如我们并不想定义 state&#xff0c;又或者说我们的操作不能引起 state 的变化&#xff0c;此时…

如何把学浪的视频保存到手机

你是不是还在为无法将学浪的视频保存到手机而烦恼&#xff1f;别担心&#xff0c;接下来我将为大家分享一个非常实用的方法&#xff0c;让你轻松实现这一目标&#xff01; 下载学浪的工具我已经打包好了&#xff0c;有需要的自己下载一下 学浪下载工具打包链接&#xff1a;百…

【408真题】2009-18

“接”是针对题目进行必要的分析&#xff0c;比较简略&#xff1b; “化”是对题目中所涉及到的知识点进行详细解释&#xff1b; “发”是对此题型的解题套路总结&#xff0c;并结合历年真题或者典型例题进行运用。 涉及到的知识全部来源于王道各科教材&#xff08;2025版&…

为什么我们会固执己见、为什么我们总认为自己是对的?

人为什么固执己见&#xff0c;是其所是&#xff0c;而非其所非&#xff1f;我们要有什么样的思维模式才能使自己有良好的判断力&#xff0c;才能作出恰当的预测和良好的决定呢&#xff1f;作者Julia Galef对TED发表演讲时提出自己的观点。以下是演讲的文字实录。 我想让你们想象…

刷代码随想录有感(80):回溯算法——解数独

题干&#xff1a; 代码&#xff1a; class Solution { public:bool backtracking(vector<vector<char>>& board){for(int i 0; i < board.size(); i){for(int j 0; j < board[0].size(); j){if(board[i][j] .){for(char k 1; k < 9; k){if(isval…

前缀和算法专题

应用: 计算数组中某区间的和 一. 一维前缀和[模版] 答案 二. 二维前缀和[模版] 答案 三. 寻找数组的中心下标 答案 四. 除自身以外数组的乘积 答案 五. 和为k的子数组 答案 六. 和可被k整除的子数组 答案 七. 连续数组 答案 八. 矩阵区域和 答案

【Linux】中常见的重要指令(下)以及重要的几个热键

目录 一、时间相关的指令date 1.时间戳 二、Cal指令 三、find指令 1.whereis 2.which 四、grep指令 五、zip和unzip指令 六、tar指令 七、bc指令 八、.重要的几个热键[Tab]&#xff0c;[ctrl]-c&#xff0c;[ctrl]-d 一、时间相关的指令date date 指定格式显示时间…