变量其实只不过是程序可操作的存储区的名称。C 中每个变量都有特定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上。
变量的名称可以由字母、数字和下划线字符组成。它必须以字母或下划线开头。大写字母和小写字母是不同的,因为 C 是大小写敏感的。基于前一章讲解的基本类型,有以下几种基本的变量类型:
| 类型 | 描述 |
| --- | -- |
|char | 通常是一个字节(八位)。这是一个整数类型。 |
|int | 对机器而言,整数的最自然的大小。 |
|float | 单精度浮点值。单精度是这样的格式,1位符号,8位指数,23位小数。![](https://img.kancloud.cn/a3/8d/a38dbccf5ce26fc4a0cc4a699fa4146c_590x75.png) |
|double| 双精度浮点值。双精度是1位符号,11位指数,52位小数。![](https://img.kancloud.cn/c0/98/c0982157130c591b673b7cb1e7a54df2_618x125.png) |
|void| 表示类型的缺失。 |
C 语言也允许定义各种其他类型的变量,比如枚举、指针、数组、结构、共用体等等,这将会在后续的章节中进行讲解,本章节我们先讲解基本变量类型。
## C 中的变量定义
变量定义就是告诉编译器在何处创建变量的存储,以及如何创建变量的存储。变量定义指定一个数据类型,并包含了该类型的一个或多个变量的列表,如下所示:
~~~
type variable_list;
~~~
在这里,**type**必须是一个有效的 C 数据类型,可以是 char、w\_char、int、float、double 或任何用户自定义的对象,**variable\_list**可以由一个或多个标识符名称组成,多个标识符之间用逗号分隔。下面列出几个有效的声明:
~~~
int i, j, k;
char c, ch;
float f, salary;
double d;
~~~
行**int i, j, k;**声明并定义了变量 i、j 和 k,这指示编译器创建类型为 int 的名为 i、j、k 的变量。
变量可以在声明的时候被初始化(指定一个初始值)。初始化器由一个等号,后跟一个常量表达式组成,如下所示:
~~~
type variable_name = value;
~~~
下面列举几个实例:
~~~
extern int d = 3, f = 5; // d 和 f 的声明与初始化
int d = 3, f = 5; // 定义并初始化 d 和 f
byte z = 22; // 定义并初始化 z
char x = 'x'; // 变量 x 的值为 'x'
~~~
不带初始化的定义:带有静态存储持续时间的变量会被隐式初始化为 NULL(所有字节的值都是 0),其他所有变量的初始值是未定义的。
>[danger]注意
1 数据具类转关 格式是(float)num1
2 转换的规则,所占字节数小的可以转换成所占字节数大(或相等)的类型
## C 中的变量声明
变量声明向编译器保证变量以指定的类型和名称存在,这样编译器在不需要知道变量完整细节的情况下也能继续进一步的编译。变量声明只在编译时有它的意义,在程序连接时编译器需要实际的变量声明。
变量的声明有两种情况:
* 1、一种是需要建立存储空间的。例如:int a 在声明的时候就已经建立了存储空间。
* 2、另一种是不需要建立存储空间的,通过使用extern关键字声明变量名而不定义它。 例如:extern int a 其中变量 a 可以在别的文件中定义的。
* 除非有extern关键字,否则都是变量的定义。
~~~
extern int i; //声明,不是定义
int i; //声明,也是定义
~~~
### 实例
尝试下面的实例,其中,变量在头部就已经被声明,但是定义与初始化在主函数内:
```
#include <stdio.h>
// 函数外定义变量 x 和 y
int x;
int y;
int addtwonum()
{
// 函数内声明变量 x 和 y 为外部变量
extern int x;
extern int y;
// 给外部变量(全局变量)x 和 y 赋值
x = 1;
y = 2;
return x+y;
}
int main()
{
int result;
// 调用函数 addtwonum
result = addtwonum();
printf("result 为: %d",result);
return 0;
}
```
当上面的代码被编译和执行时,它会产生下列结果:
~~~
result 为: 3
~~~
%d, %i 代表整数
%f 浮点
%s 字符串
%c char
%fL 长log
%e 科学计数
%g 小数或科学计数。
%s 读入一个字符串,遇空格、制表符或换行符结束。
- 空白目录
- 第一章 c语言简介
- 1 通俗地理解什么是编程语言
- 2 C语言究竟是一门怎样的语言
- 第二章 算法简介&基本语法
- 1 算法简介
- 2 C 程序结构
- 3 C 基本语法
- 第三章 数据类型
- 1 数据类型
- 2 变量
- 3 常量
- 第四章 运算符
- 1 算术运算符
- 2 关系运算符
- 3 逻辑运算符
- 4 位运算符
- 5 赋值运算符
- 6 杂项运算符(其他运算符)
- 7 c语言中的运算符优先级
- 第五章 控制流
- 1 判断语句
- 2 switch语句
- 3 循环语句
- 4 流程控制相关案例
- 第六章 指针
- 1 c语言指针概述
- 2 指针的算术运算
- 3 指针数组
- 4 指向指针的指针
- 5 传递指针给函数
- 6 从函数返回指针
- 第七章 函数
- 1 函数的语法
- 2 作用域规则
- 3 形参与实参
- 第八章 数组
- 1 C语言中的数组
- 2 多维数组
- 3 传递数组给函数
- 4 从函数返回数组
- 第九章 指针
- 1 分钟彻底理解C语言指针的概念
- 2 C语言指针变量的定义和使用
- 3 C语言指针变量的运算(加法、减法和比较运算)
- 4 C语言数组指针(指向数组的指针)
- 5 C语言字符串指针(指向字符串的指针)
- 第十章 结构体
- 第十一章 练习
- 第十二章 文件操作
- 第十三章 文件操作2