逍遥自在学C语言 | 变量、常量与数据类型
前言

一、人物简介
- 第一位闪亮登场,有请今后会一直教我们C语言的老师 —— 自在。

- 第二位上场的是和我们一起学习的小白程序猿 —— 逍遥。

二、基本数据类型

1、整型

C语言中的整型数据如下表所示:
| 数据类型 | 含义 | 长度(字节) | 取值范围(有符号) | 取值范围(无符号) |
|---|---|---|---|---|
| short | 短整型 | 2 | [ -$2^{15}$ , $2^{15}$-1 ] | [ 0 , $2^{16}$-1 ] |
| int | 整型 | 4 | [ -$2^{31}$ , $2^{31}$-1 ] | [ 0 , $2^{32}$-1 ] |
| long | 长整型 | 4或8 | ||
| long long | 长长整型 | 8 | [ -$2^{63}$ , $2^{63}$-1 ] | [ 0 , $2^{64}$-1 ] |
整型数据可以是有符号的,也可以是无符号的。
有符号的整型可以表示负数和正数,而无符号的整型只能表示非负整数。
2、浮点型
浮点型用于表示实数,它分为单精度浮点型(float)和双精度浮点型(double)。单精度浮点型占用4个字节,双精度浮点型占用8个字节。它们的取值范围和精度如下表所示:
| 数据类型 | 长度(字节) | 取值范围 | 精度 |
|---|---|---|---|
| float | 4 | 1.2E-38 ~ 3.4E38 | 约6位小数 |
| double | 8 | 2.2E-308 ~ 1.8E308(15位有效数字) | 约15位小数 |
浮点型数据在计算机内部以二进制形式存储,因此可能会存在精度问题。在进行浮点型数据的比较时,应该使用适当的误差范围进行比较。
3、字符型
字符型用于表示单个字符,它占用1个字节。
| 数据类型 | 含义 | 长度(字节) | 取值范围(有符号) | 取值范围(无符号) |
|---|---|---|---|---|
| char | 字符型 | 1 | [ -$2^7$ , $2^7$-1 ] | [ 0 , $2^8$-1 ] |
字符型数据可以作为单个字符使用,也可以作为整型数据使用,表示该字符在ASCII码表中的对应数值。
4、布尔型
布尔型(bool)用于表示真假值,它只有两个取值:true和false。
在C语言中,布尔型数据被定义为一个整型数据类型,0表示false,非0表示true。
三、变量


1、变量的定义和声明
在C语言中,变量必须先被定义或声明才能使用。定义一个变量意味着为它分配内存,声明一个变量意味着告诉编译器这个变量的类型和名称。
- 变量的定义格式如下:
type variable_name;
其中,type是变量的数据类型,variable_name是变量的名称。例如:
int apple;
short i = 5;
float voltage;
- 变量的声明有两种情况:
1️⃣一种是需要建立存储空间的。例如:int apple 在声明的时候就已经建立了存储空间。
2️⃣另一种是不需要建立存储空间的,通过使用extern关键字声明变量名而不定义它。 例如:extern int apple, 其中变量 apple 可以在别的文件中定义。
extern int apple; //声明,不是定义
int students; //声明,也是定义
一般来讲,除非有extern关键字,否则都是变量的定义
2、变量类型
在C语言中,变量的类型指的是变量所存储的数据类型。我们前面介绍的基本数据类型,都可以作为变量的类型。
- int:整型,用于存储整数。
- long: 长整型,用于存储更大的整数。
- float:单精度浮点型,用于存储浮点数。
- double:双精度浮点型,用于存储更大的浮点数。
- char:字符型,用于存储字符。
- bool:布尔型,用于存储布尔值。
C语言还提供了一些复合数据类型,如结构体、联合体和枚举等,这些符合数据类型,我们在以后的文章中再介绍。
3、变量命名规则
变量名可以由字母、数字和下划线组成,但必须以字母或下划线开头。
变量名不能使用关键字作为名称,变量名的长度没有限制,但建议使用有意义的名称。
️ 正确的变量命名
int _gCount = 1;
int m_Age = 18;
long time2 = 20;
错误的变量命名
int 1round = 0; //不能以数字开头
int case = 1; //不能以关键字作为变量名
int %age = 16; //不能用标点符号
int name age = 18; //不能用空格
4、变量的初始化和赋值
- 在C语言中,可以使用赋值运算符(=)将一个值赋给一个变量。
例如,下面的代码将值20赋给变量num:
int num;
num = 20;
- 变量的初始化是指在声明变量时将其赋初值。
例如,下面的代码声明并初始化了一个名为num的整数变量:
int num = 10;
5、变量作用域
在C语言中,变量的作用域指的是变量在程序中可见的范围。变量可以在函数内部或外部定义。
- 在函数内部定义的变量称为局部变量,只在该函数中可见。
#include <stdio.h>
void print_local_num() {
int local_num = 20; // 局部变量
printf("local_num = %d\n", local_num);
}
int main()
{
print_local_num(); // 输出 local_num = 20
return 0;
}
- 在函数外部定义的变量称为全局变量,可以在整个程序中使用。
#include <stdio.h>
int global_num = 10; // 全局变量
void print_global_num() {
printf("global_num = %d\n", global_num);
}
int main() {
print_global_num(); // 输出 global_num = 10
return 0;
}
6、变量存储类型
在C语言中,变量的存储类型指的是变量所存储的位置。C语言中的存储类型包括自动、静态、寄存器和外部等。
- 自动变量:自动变量在函数内部声明,在函数执行时被创建,在函数结束时被销毁。
- 静态变量:静态变量在函数内部或函数外部声明,它们在程序开始执行时被创建,在程序结束时被销毁。
- 寄存器变量:寄存器变量是指被存储在CPU寄存器中的变量,它们通常用于在计算密集型的代码中提高性能。
- 外部变量:外部变量是在程序文件外部声明的全局变量,可以被程序的所有文件访问。
自动变量的默认存储类别为auto。例如,下面的代码定义了一个自动变量num:
#include <stdio.h>
void print_num() {
auto int num = 30;
printf("num = %d\n", num);
}
int main() {
print_num(); // 输出 num = 30
return 0;
}
静态变量默认存储类别为static,在程序执行期间始终存在,它的值在函数调用之间保持不变。例如,下面的代码定义了一个静态变量static_num:
#include <stdio.h>
void print_static_num() {
static int static_num = 40;
printf("static_num = %d\n", static_num);
static_num++;
}
int main() {
print_static_num(); // 输出 static_num = 40
print_static_num(); // 输出 static_num = 41
print_static_num(); // 输出 static_num = 42
return 0;
}
寄存器变量的默认存储类别为register。例如,下面的代码定义了一个寄存器变量reg_num:
#include <stdio.h>
void print_reg_num() {
register int reg_num = 50;
printf("reg_num = %d\n", reg_num);
}
int main() {
print_reg_num(); // 输出 reg_num = 50
return 0;
}
外部变量的默认存储类别为extern。例如,下面的代码定义了一个外部变量extern_num,并在另一个文件中访问它:
// other_file.c
int extern_num = 60;
// main.c
#include <stdio.h>
extern int extern_num;
void print_extern_num() {
printf("extern_num = %d\n", extern_num);
}
int main() {
print_extern_num(); // 输出 extern_num = 60
return 0;
}
四、常量

在C语言中,常量可以是整数、浮点数、字符或字符串。
1、 整数常量
整数常量是指不带小数部分的数字。在C语言中,整数常量可以用十六进制、八进制或十进制表示。下表列出了不同进制下整数常量的表示方法:
| 进制 | 格式 | 示例 |
|---|---|---|
| 十进制 | 直接写数字 | 10, 20, 30 |
| 八进制 | 以0开头 | 012, 034, 076 |
| 十六进制 | 以0x或0X开头 | 0x10, 0x1E, 0xFF |
例如,下面的代码定义了三个整数常量:
#include <stdio.h>
int main() {
int decimal_num = 10;
int octal_num = 012;
int hex_num = 0xFF;
printf("decimal_num = %d, octal_num = %d, hex_num = %d\n", decimal_num, octal_num, hex_num);
return 0;
}
输出结果为:decimal_num = 10, octal_num = 10, hex_num = 255。
2、 浮点数常量
浮点数常量是指带有小数部分的数字。在C语言中,浮点数常量可以用小数点表示,也可以用科学计数法表示。例如,下面的代码定义了两个浮点数常量:
#include <stdio.h>
int main() {
float float_num = 1.23;
double double_num = 1.23e-5;
printf("float_num = %f, double_num = %f\n", float_num, double_num);
return 0;
}
输出结果为:float_num = 1.230000, double_num = 0.000012。
3、 字符常量
字符常量是指用单引号括起来的单个字符。例如,下面的代码定义了两个字符常量:
#include <stdio.h>
int main() {
char char_a = 'A';
char char_b = 'B';
printf("char_a = %c, char_b = %c\n", char_a, char_b);
return 0;
}
4、 字符串常量
字符串常量是指用双引号括起来的多个字符。在C语言中,字符串常量实际上是一个字符数组,以空字符('\0')结尾。例如,下面的代码定义了一个字符串常量:
#include <stdio.h>
int main() {
char str[] = "Hello, world!";
printf("%s\n", str);
return 0;
}
输出结果为:Hello, world!。
小结
通过这篇文章,我们已经学会了C语言中基本的数据类型、变量和常量的使用。继续加油,你会成为C语言大佬的!
逍遥自在学C语言 | 变量、常量与数据类型的更多相关文章
- Python入门 .变量 常量 基础数据类型 用户输入 流程控制语句 小练习题
# 2.name = input(“>>>”)通过代码来验证name变量是什么数据类型?--str name = input(">>>") pr ...
- golang语法学习(一):变量,常量以及数据类型
学习一门新的语言肯定是要从他的主要的语法開始,语法构成了整个程序设计的基础,从语法中我们也能够看到这门语言的一些特性.可是话说回来.语法这东西,不同的语言大同小异,所以这也对语法的记忆造成了一定的难度 ...
- iOS开发Swift篇(01) 变量&常量&元组
iOS开发Swift篇(01) 变量&常量&元组 说明: 1)终于要写一写swift了.其实早在14年就已经写了swift的部分博客,无奈时过境迁,此时早已不同往昔了.另外,对于14年 ...
- 李洪强iOS开发Swift篇---11_变量&常量&元组
李洪强iOS开发Swift篇---11_变量&常量&元组 说明: 1)终于要写一写swift了.其实早在14年就已经写了swift的部分博客,无奈时过境迁,此时早已不同往昔了.另外,对 ...
- Swift-基础语法之变量&常量&元组
使用 let来声明一个常量,用 var来声明一个变量.常量的值在编译时并不要求已知,但是你必须为其赋值一次.这意味着你可以使用常量来给一个值命名,然后一次定义多次使用 myVariable = let ...
- 不可或缺 Windows Native (2) - C 语言: 常量,变量,基本数据类型
[源码下载] 不可或缺 Windows Native (2) - C 语言: 常量,变量,基本数据类型 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 常量 变量 基本 ...
- Python学习笔记 (2)变量、常量和数据类型
变量 顾名思义,变量就是一个会变的量,用一个变量名表示,指向内存中一片区域,而指向的区域存的是什么,这个变量就是什么数据类型,和C/C++挺不一样的.变量数据类型可以通过赋值变来变去(这就叫动态语言, ...
- Go语言学习之2 包、函数、常量、数据类型、字符操作
第一部分:基本数据类型和操作符 1. 文件名&关键字&标识符 (1)所有go源码以.go结尾 (2)标识符以字母或下划线开头,大小写敏感,比如: a. boy b. Bo ...
- JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)
Java基础语法(变量.常量.数据类型.运算符与数据类型转换) 1.变量 Java中.用户能够通过指定数据类型和标识符来声明变量.其基本的语法为: DataType identifier; 或 Dat ...
- Java ——关键字 数据类型 变量 常量
本节重点思维导图 Java程序结构 public class 类名 { public static void main(String[] args){ //……语句 } } 一门语言是由以下各种元素组 ...
随机推荐
- vite+vue3批量导入静态资源图片;动态绑定大量图片
vite版本:vite3:vue版本:vue3 打包上线后发现,动态绑定的图片皆失效. 单图可用 import 导入解决,但是若有大量图片,一一导入则耗时耗力. vue2+webpack 可用 req ...
- APPscan设置自动扫描时间
一.设置位置 1.在设置自动扫描时间之前,我们要先创建扫描配置,然后再启动设置面板.2.启动AppScan,单击展开软件顶部菜单栏[工具]按钮,单击下拉菜单内[扫描调度程序],便可启动自动扫描的设置面 ...
- nodejs路由
Router与route: Route是一条路由: 如:/users - - > 调用 getAllUsers()函数 /users/count/ - - > 调用 getUsersCou ...
- OSIDP-线程-04
进程和线程 进程具有两个相互独立的特点: 1.资源所有权:进程包括存放进程映像的虚拟地址空间,具有对资源的控制权. 2.调度/执行:进程具有运行状态和优先级,是可被 OS 调度和分派的实体. 通常将分 ...
- POE供电及PD的功率分级
POE供电标准有IEEE802.3af和IEEE802.3at 802.3af,PSE最高提供15.5W的功率而PD端则为12.95W: 802.3at,PSE最高提供30W的功率而PD端则为25W: ...
- ASP.NET在Repeater中使用Button控件报错
普通Button在这里会报错,小编找了一天也没有解决这个问题, 这里可以换做LinkButton或者ImageButton替换普通的Button
- xlwings读取一整个excel文件xlsx的第一sheet到pandas.DataFrame的方法
为什么不用:pd.read_excel ? 因为 pd 使用 openpyxl 读取excel文件,有时候xlsx文件是由ApachIO产生的读取进去会出错,换个方式,用xlwings(基于pywin ...
- GDB使用详解
来源:GDB使用详解 - 知乎 (zhihu.com) 1. 概述 GDB 全称"GNU symbolic debugger",从名称上不难看出,它诞生于 GNU 计划(同时诞 ...
- Python项目案例开发从入门到实战-1.5Python文件的使用
Python对文件的操作通常按照三个步骤进行: un 使用open()函数打开(或建立)文件,并返回一个file对象. deux 使用file对象的读写方法对文件进行读写操作. trois 使用fil ...
- 详解AQS的7个同步组件
摘要:AQS的全称为Abstract Queued Synchronizer,是在J.U.C(java.util.concurrent)下子包中的类. 本文分享自华为云社区<[高并发]AQS案例 ...