五. 常变量(只读变量)和宏

● 常变量

常变量

#include <iostream.h>                    //预处理文件

int main()

{

const double pi=3.14;                     //定义圆周率常量pi, pi是一个"常变量(const variable)"

double radius;                            //定义半径变量radius

double area;                            //定义面积变量area

cout<<"Please input radius"<<endl;

cin>>radius;                            //把输入的数值作为cin这个预定义的"输入流对象",并将之作为半径

area=pi*radius*radius;                    //计算面积

cout<<"area of circle of radius " << radius << " is "<<area<<"\n";    //输出结果

return 0;

}

//也可以在声明区定义一个"符号常量(symbolic constant)",以取代上面"常变量"

#include <iostream.h>                    //预处理文件

#define PI 3.14        //PI是符号常量, 注意,预编译指令(preprocessing instruction)末尾没有分号,并且"符号常量"名一般大写, 这也被称为"不带参数的宏定义"

int main()

{

double radius;                            //定义半径变量radius

double area;                            //定义面积变量area

cout<<"Please input radius"<<endl;

cin>>radius;                            //把输入的数值作为cin这个预定义的"输入流对象",并将之作为半径

area=PI*radius*radius;                    //计算面积

cout<<"area of circle of radius " << radius << " is "<<area<<"\n";    //输出结果

return 0;

}

C语言更多使用#define来定义常量(符号常量),c++更多使用const来定义常量(常变量)。

  • 对于const的作用, "限定只读"相比"定义常数"是更专业的说法.

注意:

在定义常变量时一定要赋初值。

例如:const float PI; //错误,定义时没有给出初值

常变量不是变量,在程序中间不能更新其值。

  • 例如:PI= 3.14159; //错误!常量不能被改变

● 宏

宏是在编译期间起作用,还没到运行期间,所以没有内存分配这个说法

①不带参数的宏定义:

#define 宏名 替换文本, 即: #define <macro> <replacement name>

例如:

#define PI 3.14

②带参数的宏定义:

#define <宏名>(<参数表>) <宏体> //记住, 在编程学习中遇到的尖括号一般都不用写出来, 也可写成:

#define 宏名(参数表) 宏体

例如:

#define MEAN(X,Y) (((x)+(y))/2)        //括号不能少, 否则有可能出错

#include <iostream.h>

#define SQUARE(X) X*X

int main()

{

int a = SQUARE(2);

cout << a << endl;

return 0;

}

(C/C++学习笔记) 五. 常变量(只读变量)和宏的更多相关文章

  1. ES6学习笔记<五> Module的操作——import、export、as

    import export 这两个家伙对应的就是es6自己的 module功能. 我们之前写的Javascript一直都没有模块化的体系,无法将一个庞大的js工程拆分成一个个功能相对独立但相互依赖的小 ...

  2. Go语言学习笔记五: 条件语句

    Go语言学习笔记五: 条件语句 if语句 if 布尔表达式 { /* 在布尔表达式为 true 时执行 */ } 竟然没有括号,和python很像.但是有大括号,与python又不一样. 例子: pa ...

  3. Flutter学习笔记(3)--Dart变量与基本数据类型

    一.变量 在Dart里面,变量的声明使用var.Object或Dynamic关键字,如下所示: var name = ‘张三’: 在Dart语言里一切皆为对象,所以如果没有将变量初始化,那么它的默认值 ...

  4. go微服务框架kratos学习笔记五(kratos 配置中心 paladin config sdk [断剑重铸之日,骑士归来之时])

    目录 go微服务框架kratos学习笔记五(kratos 配置中心 paladin config sdk [断剑重铸之日,骑士归来之时]) 静态配置 flag注入 在线热加载配置 远程配置中心 go微 ...

  5. C#可扩展编程之MEF学习笔记(五):MEF高级进阶

    好久没有写博客了,今天抽空继续写MEF系列的文章.有园友提出这种系列的文章要做个目录,看起来方便,所以就抽空做了一个,放到每篇文章的最后. 前面四篇讲了MEF的基础知识,学完了前四篇,MEF中比较常用 ...

  6. (转)Qt Model/View 学习笔记 (五)——View 类

    Qt Model/View 学习笔记 (五) View 类 概念 在model/view架构中,view从model中获得数据项然后显示给用户.数据显示的方式不必与model提供的表示方式相同,可以与 ...

  7. java之jvm学习笔记五(实践写自己的类装载器)

    java之jvm学习笔记五(实践写自己的类装载器) 课程源码:http://download.csdn.net/detail/yfqnihao/4866501 前面第三和第四节我们一直在强调一句话,类 ...

  8. Learning ROS for Robotics Programming Second Edition学习笔记(五) indigo computer vision

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  9. Typescript 学习笔记五:类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

随机推荐

  1. Java原子操作类AtomicInteger应用场景

    Java中有那么一些类,是以Atomic开头的.这一系列的类我们称之为原子操作类.以最简单的类AtomicInteger为例.它相当于一个int变量,我们执行Int的 i++ 的时候并不是一个原子操作 ...

  2. 雷林鹏分享: C# 简介

    C# 简介 C# 是一个现代的.通用的.面向对象的编程语言,它是由微软(Microsoft)开发的,由 Ecma 和 ISO 核准认可的. C# 是由 Anders Hejlsberg 和他的团队在 ...

  3. DAG最长路问题 hdu-1224

    用DFS+记忆化写了一下,拓扑排序+DP的我还没弄明白.据说Codeforces 721C就是这类题目,因为有费用限制,DFS不太好写,有时间把DP法想明白来. #include <iostre ...

  4. 数据库连接的WEB登录界面的实现

    要实现此功能,需要电脑安装JAVA EE.SQL Server 2008和Tomcat等软件,并进行配置环境成功. 对这门课的希望和自己的目标: 希望:可以完全掌握老师所讲的内容. 目标:能够完整的做 ...

  5. mybatis批量插入的方式

    批量插入数据经常是把一个集合的数据一次性插入数据库,只需要执行一次sql语句,但是批量插入通常会报框架版本号的错误,本人就遇到 com.alipay.zdal.parser.exceptions.a: ...

  6. vue开发移动端项目 过渡动画问题

     App.vue:  <div id="app"> <div class="content"> <transition :name ...

  7. ccf碰撞的小球

    之前的代码有人运行不成功,自己又看了一下是输入变量顺序输入错了,现在是正确答案- #include<stdio.h> struct node{ int x; int dir; }; int ...

  8. windows 系统使用 git 和码云管理代码(本地已有项目)

    1. 为本地项目创建本地仓 找到项目所在的根目录(目录下有解决方案那个),右击目录,点击右键菜单中的“Git Bash Here”(前提是你的电脑已经装了Git,我用的是TortoiseGit) 然后 ...

  9. docker 系列之 配置阿里云镜像加速器

    1.登录阿里云 2.登录后找到右上角的“管理中心”,点击进入后>点击“镜像加速器”;剩下的安装文档配置就好 问题1:配置完后还是提示:Tag latest not found in reposi ...

  10. HBase环境搭建、shell操作及Java API编程

    一. 1.掌握Hbase在Hadoop集群体系结构中发挥的作用和使过程. 2.掌握安装和配置HBase基本方法. 3.掌握HBase shell的常用命令. 4.使用HBase shell命令进行表的 ...