• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > 详解C++中常量的类型与定义

详解C++中常量的类型与定义

作者:飞龙 字体:[增加 减小] 来源:互联网 时间:2017-05-28

飞龙 通过本文主要向大家介绍了c++中常量,c++定义常量,c++常量,c++常量表达式,数据常量的类型等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量。
常量可以是任何的基本数据类型,可分为整型数字、浮点数字、字符、字符串和布尔值。
常量就像是常规的变量,只不过常量的值在定义后不能进行修改。

整数常量

整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制。
整数常量也可以带一个后缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long)。后缀可以是大写,也可以是小写,U 和 L 的顺序任意。
下面列举几个整数常量的实例:

212   // 合法的
215u  // 合法的
0xFeeL  // 合法的
078   // 非法的:8 不是八进制的数字
032UU  // 非法的:不能重复后缀
</div>

以下是各种类型的整数常量的实例:

85   // 十进制
0213  // 八进制 
0x4b  // 十六进制 
30   // 整数 
30u  // 无符号整数 
30l  // 长整数 
30ul  // 无符号长整数
</div>

浮点常量

浮点常量由整数部分、小数点、小数部分和指数部分组成。您可以使用小数形式或者指数形式来表示浮点常量。
当使用小数形式表示时,必须包含小数点、指数,或同时包含两者。当使用指数形式表示时,必须包含整数部分、小数部分,或同时包含两者。带符号的指数是用 e 或 E 引入的。
下面列举几个浮点常量的实例:

3.14159  // 合法的 
314159E-5L // 合法的 
510E   // 非法的:不完整的指数
210f   // 非法的:没有小数或指数
.e55   // 非法的:缺少整数或分数
</div>

布尔常量

布尔常量共有两个,它们都是标准的 C++ 关键字:

  • true 值代表真。
  • false 值代表假。

我们不应把 true 的值看成 1,把 false 的值看成 0。

字符常量

字符常量是括在单引号中。如果常量以 L(仅当大写时)开头,则表示它是一个宽字符常量(例如 L'x'),此时它必须存储在 wchar_t 类型的变量中。否则,它就是一个窄字符常量(例如 'x'),此时它可以存储在 char 类型的简单变量中。
字符常量可以是一个普通的字符(例如 'x')、一个转义序列(例如 '\t'),或一个通用的字符(例如 '\u02C0')。
在 C++ 中,有一些特定的字符,当它们前面有反斜杠时,它们就具有特殊的含义,被用来表示如换行符(\n)或制表符(\t)等。下表列出了一些这样的转义序列码:

转义序列
含义
\ \ 字符
\' ' 字符
\" " 字符
\? ? 字符
\a 警报铃声
\b 退格键
\f 换页符
\n 换行符
\r 回车
\t 水平制表符
\v 垂直制表符
\ooo 一到三位的八进制数
\xhh . . . 一个或多个数字的十六进制数

下面的实例显示了一些转义序列字符:

#include <iostream>
using namespace std;

int main()
{
 cout << "Hello\tWorld\n\n";
 return 0;
}

</div>

当上面的代码被编译和执行时,它会产生下列结果:

Hello World
</div>

字符串常量

字符串字面值或常量是括在双引号 "" 中的。一个字符串包含类似于字符常量的字符:普通的字符、转义序列和通用的字符。
您可以使用空格做分隔符,把一个很长的字符串常量进行分行。
下面的实例显示了一些字符串常量。下面这三种形式所显示的字符串是相同的。

"hello, dear"

"hello, \

dear"

"hello, " "d" "ear"

</div>

定义常量

在 C++ 中,有两种简单的定义常量的方式:

  • 使用 #define 预处理器。
  • 使用 const 关键字。

#define 预处理器

下面是使用 #define 预处理器定义常量的形式:

#define identifier value
</div>

具体请看下面的实例:

#include <iostream>
using namespace std;

#define LENGTH 10 
#define WIDTH 5
#define NEWLINE '\n'

int main()
{

 int area; 

 area = LENGTH * WIDTH;
 cout << area;
 cout << NEWLINE;
 return 0;
}

</div>

当上面的代码被编译和执行时,它会产生下列结果:

const 关键字

您可以使用 const 前缀声明指定类型的常量,如下所示:

const type variable = value;
</div>

具体请看下面的实例:

#include <iostream>
using namespace std;

int main()
{
 const int LENGTH = 10;
 const int WIDTH = 5;
 const char NEWLINE = '\n';
 int area; 

 area = LENGTH * WIDTH;
 cout << area;
 cout << NEWLINE;
 return 0;
}

</div>

当上面的代码被编译和执行时,它会产生下列结果:
请注意,把常量定义为大写字母形式,是一个很好的编程实践。

常量的引用
如果是对一个常量进行引用,则编译器首先建立一个临时变量,然后将该常量的值置入临时变量中,对该引用的操作就是对该临时变量的操作。对C++常量引用可以用其它任何引用来初始化;但不能改变。

关于引用的初始化有两点值得注意:

(1)当初始化值是一个左值(可以取得地址)时,没有任何问题;

(2)当初始化值不是一个左值时,则只能对一个const T&(常量引用)赋值。而且这个赋值是有一个过程的:

首先将值隐式转换到类型T,然后将这个转换结果存放在一个临时对象里,最后用这个临时对象来初始化这个引用变量。

例子:

double& dr = 1; // 错误:需要左值 
const double& cdr = 1; // ok 
</div>

第二句实际的过程如下:

double temp = double(1); 
const double& cdr = temp; 
</div>

作函数参数时:

// bc_temp_objects_not_bound_to_nonconst_ref.cpp 
// compile with: /EHsc 
#include "iostream" 
using namespace std; 
class C {}; 
void f(C & c) { cout << "C&" << endl; } 
void f(C const & c) { cout << "C const &" << endl; } 
int main() { 
f(C()); 
} 
</div>

结果:

更直接的,用基本类型:

#include <iostream> 
using namespace std; 
void display(int const &ref) 



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++ 中静态成员函数与非静态成员函数的区别
  • 详解C++中常量的类型与定义
  • C++中的常量定义小结
  • C++ 中滚动条的滚动问题

相关文章

  • 2017-05-28用C语言来实现一个简单的虚拟机
  • 2017-05-28c++大数阶乘的实现方法
  • 2022-04-30C语言自增(++)和自减(--)
  • 2017-05-28统计输入字符各个字母出现频率的解题思路
  • 2017-05-28一波C语言字符数组实用技巧集锦
  • 2017-05-28解读C++编程中派生类的构成和创建
  • 2017-05-28C语言求幂计算的高效解法
  • 2017-05-28C 语言程序结构示例解析
  • 2017-05-28VC++中内存对齐实例教程
  • 2017-05-28C语言中的sizeof操作符用法及和strlen的区别

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 基于Windows C++ 应用程序通用日志组件的使用详解
    • C++11新特性之auto的使用
    • C语言、C++中的union用法总结
    • C 字符串数组排序的小例子
    • c语言获取直播吧最近一周nba比赛信息
    • C++类型转换归纳总结
    • C++处理键盘输入的方法
    • 浮点数在计算机中存储方式是怎样的
    • LintCode 堆化详解及实例代码
    • 详解C++中实现继承string类的MyString类的步骤

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有