(C/C++学习笔记) 五. 常变量(只读变量)和宏

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

● 常变量

常变量

#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<<" ";    //输出结果

    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<<" ";    //输出结果

    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;

}

 

 

原文地址:https://www.cnblogs.com/ArrozZhu/p/8377688.html