C 语言基础-常量和变量

常量(只读)

常量是只读的固定值,在程序运行期间不会改变,不能被程序修改的量,可以是任意类型。

定义常量的方式有两种:

  • 使用 #define 宏定义
  • 使用 const 关键字

常量大体分为:

  • 直接常量(字面常量)
  • 符号常量(#define 定义的标识符常量)
  • 常变量(const修饰的变量)
  • 枚举常量

注意:严格意义说const修饰的变量称为常变量更合适,而不能被称为符号常量,因为const修饰的变量,其值不一定是不可修改的,如:int * const p2 = 10;,p2是常量指针,但*p2却是整形变量。

直接常量(字面常量)

能直接得知它的值和类型,称其为直接常量(字面常量)。

  • 布尔型(bool)

    • true、false,机器码表示1、0.
  • 整型常量(int)

    • 包括长整型、短整形、有符号型、无符号型
    • 包含了所有的整数,比如6、27、108、-190、-278等
  • 浮点型(实数)常量(float\double)

    • double:双精度浮点型,其实就是小数。比如5.43、0.145E25(代表0.145×10e-25)、0.0(注意,0.0也算是个小数)
    • float:单精度浮点型,也是小数,比double的精确程度低,也就是说所能表示的小数位比较少。为了跟double区分开来,float型数据都是以f结尾的,比如5.4f、-2.3f、0.0f。需要注意的是,绝对不能有10f这样的格式,编译器会直接报错,只有小数才允许加上f。
    • 有无符号型
  • 字符常量(char)

    • 普通字符

      • 将一个数字(09)、英文字母(az、A~Z)或者 其他符号(+、-、!、?等)用单引号(‘’)括起来,这样构成的就是字符常量。比如:‘8’、‘A’、'-'等。
    • 转义字符
      • 以字符 \ 开头的字符序列也是字符常量,如:'\n’是一个换行符。

    注意: 单引号只能括住1个字符,而且不能是中文字符,下面的写法是错误的:‘abcd’,‘1356’、‘年’。

  • 字符串常量

    • 一串字符,将一个或者多个字符用双引号(“”)括起来,这样构成的就是字符串常量。比如"6"、“小伙子”、“afas”。

符号常量

定义一个标识符(名称)来表示一个常量,该标识符称之为符号常量

使用 #define 定义符号常量

#define又称宏定义,用标识符定义为其后的常量,该标识符称为符号常量

  • 在预编译阶段起作用
  • 单纯进行文本替换,没有类型,不做类型检查,也不能进行调试
  • 只是代码的展开操作,不分配内存,占的是test段(代码段)空间
  • 宏调用时,需要程序设计者自行确保宏调用参数的类型正确。
  • 过多的使用宏定义,会增加代码长度,会使二进制文件变大,会增加编译时间
  • 宏定义允许嵌套宏定义

定义语法:#define 标识符 常量 //注意, 最后没有分号

定义字面常量:

#define A 10
#define B 'b'
#define C "123"#define PI 3.14
// 允许嵌套,这里嵌套这已定义的PI
#define S PI*A

常变量(const修饰的变量)

通过const关键字修饰的变量,被称为常变量

  • 定义语法:const type variable = value;
  • const 定义常量与赋值要在一个语句内完成,才是合格的常变量哟。
  • 定义常量时建议使用大写字母定义,便于与变量名区分。

const定义常量正确示例:

const int var = 15;

const定义常量错误示例:

// 不合格 因为var已经是常变量啦,先声明再赋值根本行不通呀
const int var;
// 编译器报错:Cannot assign to variable 'var' with const-qualified type 'const int'
var = 15;

实例参考:

int *p; /* 定义的是指针变量 *//**const 修饰的是整个右边的部分p1是指针变量,*p1是整型常量*/
int const *p1 = 10; /**p2是常量指针,*p2是整型变量*/
int * const p2 = 10; /**
p3与*p3都是只读常量
*/
int const * const p3 = 10;

枚举常量

枚举是由一组不变的值组成,枚举值是常量,都是int(整型),在程序运行时才会分配内存,存放在data段的静态存储区

定义语法:enum EnumName{标识符,标识符,…}

enum COLOR
{RED,BLUE,GREEN
};

该语句执行后有两个变化:

  • COLOR成为枚举的名称,成为一种新类型.
  • 如果没有特殊说明,默认枚举中标示符的值是从0开始递增,每次+1,即RED=0,BLUE=1,GREEN=2,…

也可以自己定义枚举值:

enum COLOR
{RED = 100,BLUE = 200,GREEN = 300
};

枚举的优点:

  • 枚举使代码更清晰,增加可读性,允许用描述性的名称表示整数值,而不是用含义模糊的数来表示。
  • 限制开发者不能随意赋值,只能在列举的值中选择。
  • 枚举可以使代码更易于维护,有助于确保给变量指定合法的、期望的值。

变量(可读可写)

变量是可读可写的,可以认为是程序可操作的存储区的名称,表示在程序执行期间可以改变值,可以是任意类型。

  • 使用前必须先进行定义。
  • 变量声明时,会分配一块存储空间给变量,以便以后存储数据。
  • 如果定义了多个变量则为多个变量分别分配不同的存储空间。
  • 类型决定了变量存储的大小和布局,不同类型的变量占用不同大小的存储空间。
  • 变量的名称可以由字母、数字和下划线字符组成,建议使用驼峰命名法。

变量分为:

  • 全局变量:在函数、方法、代码块外部定义的变量被称为全局变量。
  • 静态变量:static 关键字修饰的变量被称为静态变量
  • 局部变量:在函数、方法、代码块内部部定义的变量被称为局部变量。

变量声明

表明变量的类型和名称,会为变量分配内存空间。

  • 向编译器保证变量以指定的类型和名称存在,这样编译器在不需要知道变量完整细节的情况下也能继续进一步的编译。
  • 变量声明只在编译时有它的意义,在程序连接时编译器需要实际的变量声明。
  • 声明格式:类型 标识符(变量名)

int w;// 声明一个整型变量
声明多个变量格式:类型 标识符,标识符;
int a,b,c;

变量的声明有两种情况:

  • 分配存储空间的,如:int a;声明的时候就会分配存储空间。
  • 不会分配存储空间的,使用extern关键字声明变量名而不定义它。 例如:extern int a; 其中变量 a 可以在别的文件中定义的。

extern int i; //声明,不是定义
int i; //声明,也是定义

声明变量格式:类型 标识符;

int num;

变量初始化

先声明,后赋值:

int a;
a = 10;

声明同时直接赋值:

int a = 10;

注意: 变量没有初始化时不要轻易拿来使用(下面的写法是不建议的)

int score;//未初始化的变量,它的内容的不确定的,随机的。
printf(“score =%d”,score);

定义变量

定义 = 声明 + 初始化

定义变量格式:类型 标识符 = value;

int d = 9;

C 中的左值(Lvalues)和右值(Rvalues)

C 中有两种类型的表达式:

  • 左值(lvalue):指向内存位置的表达式被称为左值(lvalue)表达式。左值可以出现在赋值号的左边或右边。
  • 右值(rvalue):术语右值(rvalue)指的是存储在内存中某些地址的数值。右值是不能对其进行赋值的表达式,也就是说,右值可以出现在赋值号的右边,但不能出现在赋值号的左边。

变量是左值,因此可以出现在赋值号的左边。数值型的字面值是右值,因此不能被赋值,不能出现在赋值号的左边。下面是一个有效的语句:

int g = 20;

但是下面这个就不是一个有效的语句,会生成编译时错误:

10 = 20;

参考文献:

C 变量

C 语言基础-什么是常量、变量?相关推荐

  1. Swift基础语法(常量变量、数据类型、元组、可选、断言)

    本文来自Swift中文开发组,感谢翻译者的分享. 本文将分几部分对Swift对ios的语法做讲解.本文为第一节,主要讲解基础语法. 常量和变量 常量和变量把一个名字(比如maximumNumberOf ...

  2. c语言基本数据类型常量,C语言基础学习基本数据类型-变量和常量

    变量和常量 什么是变量和常量?有些数据在程序运行前就预先设定,并在运行过程中不发生变化,称之为常量:有些数据在程序运行中可能发生变化或被赋值,称之为变量. 使用变量前必须先声明一个变量.变量定义的语法 ...

  3. 谈谈你对c语言中数据(各种常量,变量,函数参数,字符串)的存储认识,自考《高级语言程序设计》知识点总结(二)...

    2.1 C语言的数据类型 数据类型包含两方面的内容:数据的表示和对数据加工的操作.数据的全部可能表示构成数据类型的值的集合.数据全部合理的操作构成数据类型的操作集合. 在C语言中,把整型.实型和字符型 ...

  4. c语言如何定义标识符 常量 变量,标识符、常量和变量

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 1[单选题] C语言主要是借助以下哪个功能来实现程序模块化 A.定义函数 B.定义常量和外部变量 C.三种基本结构语句 D.丰富的数据类型 参考答案:A ...

  5. C语言基础知识【常量】

    C 常量 1.常量是固定值,在程序执行期间不会改变.这些固定的值,又叫做字面量. 常量可以是任何的基本数据类型,比如整数常量.浮点常量.字符常量,或字符串字面值,也有枚举常量. 常量就像是常规的变量, ...

  6. Go语言基础进阶—程序结构—变量

    基于Go语言圣经总结,适合有一定基础的同学,对于提升Go语言的掌握有很大的帮助 建议放大观看

  7. C语言基础教程之常量

    C 常量 常量是固定值,在程序执行期间不会改变.这些固定的值,又叫做字面量. 常量可以是任何的基本数据类型,比如整数常量.浮点常量.字符常量,或字符串字面值,也有枚举常量. 常量就像是常规的变量,只不 ...

  8. c语言中整型常量ox,C语言基础教程:数字常量

    C语言中,数字常量包括整型常量和浮点型常量,浮点型常量又称实数. 1.整型常量 C语言中整型常量有三种不同的表示形式:十进制.八进制和十六进制. (1)十进制.这是一种常用的表示形式,它将直接给出数字 ...

  9. C语言基础——运算符(定义变量、转义字符、输入输出语句、运算符、32个关键字)

    文章目录 一.定义变量 1.如何定义? 2.如何调用? 二.转义字符 二.输入输出语句 1.输出语句 2.输入语句 三.运算符 3.1 赋值运算符: 3.2 算数运算符: 3.3条件运算符 3.4 逻 ...

  10. JAVA语言基础常量和变量

    JAVA语言基础常量和变量 ###02.01_Java语言基础(常量的概述和使用)(掌握) A:什么是常量 在程序执行的过程中其值不可以发生改变 B:Java中常量的分类 字面值常量 自定义常量(面向 ...

最新文章

  1. python中符号计算输出数学_Python科学计算与数据处理—符号运算库.doc
  2. gitstack连接詹金斯_詹金斯的Maven报告
  3. java元婴期(27)----java进阶(springmvc(1)---springmvc框架入门程序(上)(不基于注解开发))
  4. 飞行棋 c语言,骑士飞行棋【纯c】
  5. Boss直聘上面HR是不是很恶心?
  6. 靠着零代码报表工具,转行报表开发后月薪超过3万
  7. 草图大师(2018)
  8. docker-reviewboard
  9. light7ui 刷新子页面 js不能加载的问题
  10. 八卦는 生命의 運動 (韓長庚 易學原理總論)
  11. vue+ elementui合并单元格后 checkbox多选单选取值问题
  12. smartupload java_java servlet通过SmartUpload开发文件批量上传、批量下载源码分享
  13. Java Class 是什么
  14. 为什么要学习 Netty?
  15. 【渝粤教育】国家开放大学2018年秋季 7404-22T数学建模 参考试题
  16. Android单独的服务App,值得推荐的 4 款独立开发者 APP
  17. android相机网格,网格相机app
  18. 【蓝桥杯省赛】冲刺练习题【绘图】倒计时【10】天
  19. oauth2.0源码分析之oauth/token申请令牌
  20. Java 封装的详解

热门文章

  1. Eviews回归结果解读
  2. 盘点那些年火过的php建站系统
  3. 紫薇在线排盘php源码,灵匣网紫微斗数在线排盘系统
  4. python 打开文件夹与开启文件的几种方式
  5. bzoj4200: [Noi2015]小园丁与老司机(可行流+dp)
  6. CentOS7 网络管理与配置
  7. 网站如何被百度蜘蛛快速抓取?
  8. 惠普打印机安装驱动 无法注册字体
  9. 初级第二旬04—六字准提观试题
  10. 阿里巴巴国际站如何查看优秀同行产品关键词方法?