C语言变量定义和赋值
定义变量的格式非常简单,如下所示:
数据类型 变量名;
首先要强调的一点是:最后的分号千万不要丢了。变量的定义是一个语句,我们说过,语句都是以分号结尾的。
“数据类型”表示想要存储什么类型的数据就定义什么类型的变量。想要存储整数就定义成 int 型;想要存储小数就定义成 float 型或 double 型;想要存储字符就定义成 char 型……
“变量名”就是你想给这个变量起个什么名字,通常都是用字母。比如:
int i;
就表示定义了一个整型变量 i。变量名的命名规则稍后会详细地讲。
那么变量定义好之后怎么将数放到这个变量里面呢?首先要理解的是,将一个数字放到一个变量中,这个动作叫“赋值”。“赋”即“给予”的意思,所以“给变量赋值”意思就是将一个值传给一个变量。那怎么赋值呢?是通过赋值运算符=
,赋值的格式是:
变量名 = 要赋的值;
它的意思是将=
右边的数字赋给左边的变量。比如:
i = 3;
这就表示将 3 赋给了变量 i,此时 i 就等于 3 了。
这里需要注意的是,这里的=
跟数学中的“等于号”是不一样的。在刚开始学习C语言的时候,在这一点上大家很难从数学的思维中转变过来。在C语言中=
表示赋值,即将右边的值赋给左边的变量,而不是左边的变量等于右边的值。
那C语言中有没有表示相等的运算符呢?这就是双等号==
。这个运算符就与数学中的“等于”是同一个意思了。
以上就是变量的定义和赋值,它们是分成两步写的。也可以将它们合成一步,而且事实上,在实际编程中用得最多的也是合二为一的写法。那么怎么合在一起呢?很简单,形式如下:
数据类型 变量名 = 要赋的值;
比如:
int i = 3;
就表示定义了一个变量 i,并把 3 赋给这个变量。它与
int i;
i =3;
是等价的。
在定义变量时也可以一次性定义多个变量,比如:
int i, j;
这就表示定义了变量 i 和 j。这里需要强调的是,当同时定义多个变量时,变量之间是用逗号隔开的,千万别写成分号。这是很多新手最容易犯的错误,即将逗号和分号记混了。
同样也可以在定义多个变量的同时给它们赋值:
int i = 3, j = 4;
中间还是用逗号隔开,最后别忘记输入分号。
最后需要注意的是,在较老的 C89/C90 标准(也称 ANSI C 标准)中,变量只能在程序的开头定义,或者说变量定义的前面不能有其他非声明或非定义的语句。比如在C语言中像下面这种写法就是错误的:
# includeint main(void){int i;i = 3;int j = 4; //这句是错误的,因为在它前面有一个给变量i赋值的非定义语句return 0;}
在 VC 6.0 或者 VS2010 下编译的时候会提示下面的错误:
error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
但是这种写法在.cpp
文件(C 源文件)中是允许的,.cpp
文件中可以在程序的任意位置定义变量。
其实这与语言本身并没有什么关系,并不是说C语言中变量就不能定义在程序中间。这实际上是与标准有关系的,有些编译器使用的是 C89 标准,C89 标准要求所有声明(比如函数声明、变量定义)必须要写在程序、函数或复合语句的开头,而 C99 的新特性允许语句和声明按任意顺序排列,只要遵循“先声明后使用”的原则就行。
因为 VC 6.0 和 VS2010 遵循的是 C89 标准,或者说它不能完全支持 C99 标准,所以它不允许将变量定义在程序中间;而 Linux 中 GCC 编译器遵循的是 C99 标准,所以同样是.c
文件,同样是编写C语言,它就可以将变量定义在程序的任意位置,只要是在使用位置之前即可。
其实 C99 标准是比较好的,变量需要的时候才定义,缩短了它的生命周期,节省了内存。因为只要定义变量,系统就会为它分配内存空间,所以如果在前面定义了但是到最后才使用它,那么在使用之前它一直占着内存不放,有点浪费。
但是尽管如此,大家在编程的时候还是尽量按照 C89 的标准编写,即使在完美支持 C99 标准的编译器中也最好不要将声明写在程序的中间。因为 C89 历时较长,现在它仍然是主流,很多编译器仍然只支持 C89 标准或不能很好地支持 C99 标准。所以按 C89 标准编写可移植性更强。
上面提到“复合语句”,在复合语句中也可以定义变量。所谓语句就是以分号结尾的,而复合语句就是多个语句组合在一起的语句。在C语言中,用大括号{ }
括起来的多个语句称为复合语句。
复合语句在流程控制中用得特别多,比如后面将要学习的 if、for、while 一般都是跟复合语句的。此时在这些复合语句中也可以定义变量,但是也只能定义在它的开头。主函数 main 下面也是用大括号括起来的,所以主函数 main 下的函数体本质上也是一个复合语句,是一个大的复合语句。
所以它们还是有共性的,也就是说,在C语言中,只要是用大括号{ }
括起来的,那么在它的开头都可以定义变量。而且这些在大括号中定义的变量都称为局部变量。此外,在大括号外面也可以定义变量,叫全局变量。这个我们就先不讲了,到后面再讲。
声明:
本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。
C语言变量定义和赋值相关推荐
- C语言变量定义与赋值
编程环境:Visual Studio 2017; 电脑系统:WIN10 : 一.定义变量与初始化 一般编程中,考虑编程环境及C89.C99标准,稳妥的做法是:定义变量的同时进行初始化: 1.目的是j的 ...
- C++变量定义和赋值
C++变量定义和赋值 C++是"静态类型(statically typed)语言",含义:在编译阶段检查类型,检查类型的过程称为类型检查(type checking) 动态类型语言 ...
- 1.2编程基础之变量定义、赋值及转换 10 Hello, World 的大小
http://noi.openjudge.cn/ch0102/10/ #include <bits/stdc++.h> using namespace std; int main( voi ...
- c语言中变量的大小,C语言变量定义
C语言变量定义 程序设计就是让计算机按照一定的指令来进行工作,可以说数据的处理是程序设计的主要任务.那么数据是怎么加入到计算机的内存中呢?下面是小编分享的C语言变量定义,欢迎大家阅读!更多相关信息请关 ...
- (超实用、简单明了)Mysql变量定义与赋值
最近在使用存储过程定时创建分区的时候,运行时经常报错,原因都是因为变量的定义或者赋值问题导致的,在此记录一下MySQL的变量定义及赋值,方便自己和大家查阅,各位看到此博客的小伙伴,如有不对的地方请及时 ...
- mysql存储过程变量定义_存储过程中MySQL变量定义和赋值
MySQL变量定义和赋值是我们经常会遇到的问题,下面就为您接受如何在存储过程中MySQL变量定义和赋值,希望对您学习MySQL变量定义方面能有所启迪. 一.MySQL变量的定义 mysql变量定义用d ...
- c语言 字母赋值给变量,C++变量(变量定义和赋值)详解
变量表示计算机内存中的存储位置.使用赋值语句可以将值存储到变量中. 计算机编程中变量的概念与数学上变量的概念有些不同.在编程中,变量是用于保存数据的命名存储位置.变量允许程序员将数据存储到计算机内存中 ...
- c语言 变量 定义 使用,C语言为什么要规定对所用到的变量要“先定义,后使用”...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 int a=10; 以上一句话对变量a进行了声明,定义以及初始化 extern int a; 以上一句话仅仅对变量a进行了声明,将a的链接属性设置为ext ...
- golang语言变量定义、打印、占位符
文章目录 题外话 go变量定义 Printf.Println.Print Package fmt 详细介绍 题外话 为什么在有些地方使用go,有些地方使用golang? 两者的关系是什么? 事实上Go ...
最新文章
- 第十六届全国大学生智能车竞赛线上赛点赛道审核 - 华南赛区
- swift 3d v6.0汉化中文版
- MFC CTreeCtrl运用
- PHP如何保存当前用户
- .NET Core 如何调试 CPU 爆高?
- 我在美团Android研发岗工作的那5年,含泪整理面经
- 【CodeVS】1023 GPA计算
- av_seek_frame() 定位为什么不准呢?
- 谷歌大脑小姐姐亲授:如何应聘成功羡煞旁人的AI工程师岗位
- 算法基础部分2-分治
- mysql union all 等效_Mysql联合查询UNION和UNION ALL的使用介绍
- 手机12306买卧铺下铺技巧_手机上买火车票怎么买下铺
- 开博了,微博太短,不适合,还是稀饭大的博客
- uni-app 启动手机模拟器
- RTU和DTU的区别是什么?
- 2023年全国最新会计专业技术资格精选真题及答案9
- 外码一定是被参照表的主码吗?
- 思维导图带你看遍花样百出的各类月饼?
- 【金猿产品展】HIO——一体化抖音电商运营投放管理平台
- python复制excel模板并保留表格样式