C++基础知识(三)—— 常量
一个常量(constant)是一个有固定值的表达式。
字(Literals)
字是用来在程序源码中表达特定的值。在前面的内容中我们已经用了很多的字来给变量赋予特定的值。例如:
这句代码中5就是一个字常量。
字常量(literal constant)可以被分为整数(Integer Numbers), 浮点数(Floating-Point Numbers),字符(Characters)和字符串(Strings)。
整数(Integer Numbers)
707
-273
他们是整型常数,表示十进制整数值。注意表示整型常数时我们不需要些引号(quotes ("))或任何特殊字符。毫无疑问它是个常量:任何时候当我们在程序中写1776,我们指的就是1776这个数值。
除十进制整数另外, C++还允许使用八进制(octal numbers)和十六进制(hexadecimal numbers)的字常量(literal constants)。如果我们想要表示一个八进制数,我们必须在它前面加上一个0字符(zero character),而表示十六进制数我们需要在它前面加字符0x (zero, x)。例如以下字常量(literal constants)互相等值:
0113 // 八进制 octal
0x4b // 十六进制 hexadecimal
所有这些都表示同一个整数: 75 (seventy five) ,分别以十进制数,八进制数和十六进制数表示。
像变量一样,常量也是有数据类型的。默认的整数字常量的类型为int型。我们可以通过在后面加字母u或l来迫使它为无符号(unsigned)的类型或长整型(long)。
75 // int 75u // unsigned int 75l // long 75ul // unsigned long
这里后缀u和l可以是大写,也可以是小写。
浮点数(Floating Point Numbers)
浮点数以小数(decimals)和/或指数幂( exponents)的形式表示。它们可以包括一个小数点,一个e字符(表示"by ten at the Xth height",这里X是后面跟的整数值) ,或两者都包括。
6.02e23 // 6.02 x 10^1023
1.6e-19 // 1.6 x 10^-19
3.0 // 3.0
以上是包含小数的以C++表示的4个有效数值。第一个是PI,第二个是Avogadro数之一,第三个是一个电子(electron)的电量(electric charge)(一个极小的数值) – 所有这些都是近似值。最后一个是浮点数字常量表示数3。
浮点数的默认数据类型为double。如果你想使用float或long double类型,可以在后面加f或l后缀,同样大小写都可以:
3.14159L // long double 6.02e23f // float
字符和字符串(Characters and strings)
此外还有非数字常量,例如:
'p'
"Hello world"
"How do you do?"
前两个表达式表示单独的字符(character),后面两个表示由若干字符组成的字符串(string) 。注意在表示单独字符的时候,我们用单引号(single quotes (')),在表示字符串或多于一个字符的时候我们用双引号(double quotes ("))。
当以常量方式表示单个字符和字符串时,必须写上引号以便把他们和可能的变量标识或保留字区分开,注意以下例子:
'x'
x 指一个变量名称为 x, 而'x'指字符常量'x'。
字符常量和字符串常量各有特点,例如escape codes,这些是除此之外无法在源程序中表示的特殊的字符,例如换行符 newline (\n) 或跳跃符tab (\t)。所有这些符号前面要加一个反斜杠inverted slash (\)。这里列出了这些escape codes:
\n | 换行符newline |
\r | 回车carriage return |
\t | 跳跃符tabulation |
\v | 垂直跳跃vertical tabulation |
\b | backspace |
\f | page feed |
\a | 警告alert (beep) |
\' | 单引号single quotes (') |
\" | 双引号double quotes (") |
\? | 问号question (?) |
\\ | 反斜杠inverted slash (\) |
例如:
'\t'
"Left \t Right"
"one\ntwo\nthree"
另外你可以数字ASCII 码表示一个字符,这种表示方式是在反斜杠(\)之后加以8进制数或十六进制数表示的ASCII 码。在第一种(八进制octal)表示中,数字必需紧跟反斜杠(例如\23或\40),第二种(十六进制hexacedimal),必须在数字之前写一个x字符(例如\x20或\x4A)。
如果每一行代码以反斜杠inverted slash (\)结束,字符串常量可以分多行代码表示:
two lines"
你还可以将多个被空格blankspace、跳跃符tabulator、换行符newline或其他有效空白符号分隔开的字符串常量连接在一起:
最后如果我们想让字符串使用宽字符(wchar_t),而不是窄字符(char),可以在常量的前面加前缀L:
L"This is a wide character string"
宽字符通常用来存储非英语字符,比如中文字符,一个字符占两个字节。
布尔型常量(Boolean Literals)
布尔型只有两个有效的值:true和false,其数据类型为bool。
定义常量Defined constants (#define)
使用预处理器指令#define,你可以将那些你经常使用的常量定义为你自己取的名字而不需要借助于变量。它的格式是:
#define identifier value
例如:
#define NEWLINE '\n'
#define WIDTH 100
以上定义了三个常量。一旦做了这些声明,你可以在后面的程序中使用这些常量,就像使用其它任何常量一样,例如:
cout << NEWLINE;
实际上编译器在遇到#define指令的时候做的只是把任何出现这些 常量名(在前面的例子中为PI, NEWLINE或WIDTH)的地方替换成他们被定义为的代码(分别为3.14159265, '\n'和100)。因此,由#define定义的常量被称为宏常量macro constants。
#define 指令不是代码语句,它是预处理器指令,因此指令行末尾不需要加分号semicolon (;) 。如果你在宏定义行末尾加了分号(;) ,当预处理器在程序中做常量替换的时候,分号也会被加到被替换的行中,这样可能导致错误。
声明常量declared constants (const)
通过使用const前缀,你可以定义指定类型的常量,就像定义一个变量一样:
const char tab = '\t';
const zip = 12440;
如果没有指定类型(如上面最后例子中最后一行),编译器会假设常量为整型int。
C++基础知识(三)—— 常量相关推荐
- (六)JS基础知识三(走进作用域和闭包)【三座大山之二,不会闭包,基本不会通过】
JS基础知识三(作用域和闭包) 提问 作用域 自由变量 闭包 this 提问 this的不同应用场景,如何取值 手写bind函数 实际开发中闭包的应用场景,举例说明 创建10个a标签,点击的时候弹出对 ...
- php基础知识总结大全,php基础知识回顾 —— 常量
您现在的位置是:网站首页>>PHP>>php php基础知识回顾 -- 常量 发布时间:2019-01-23 17:23:08作者:wangjian浏览量:489点赞量:0 在 ...
- CSS基础知识---三种选择器
CSS基础知识---三种选择器 选择器 标签选择器 id选择器 class选择器 全部代码 选择器 标签选择器 id选择器 class选择器 标签选择器 选择器优先级:id>class>标 ...
- C语言基础知识(三)-程序设计结构、数组、字符串处理函数
本文是C语言的基础知识,主要讲解三种程序设计结构.数组.字符串和字符数组.数组元素查询以及字符串处理函数. 程序结构设计 包括C语言在内的几乎任何编程语言都支持以下三种程序设计结构,它们分别是: 顺序 ...
- C# 基础知识 (三).主子对话框数值传递
在C# winform编程中,我们经常会遇到不同窗口间需要传递数值的问题.比如数据库的应用,主窗口填写内容num1,点击按钮,在弹出的子窗口显示对应num1值;或者在子窗口填写新注册用户名信息,在主窗 ...
- 三校生计算机word基础知识,三校生计算机第一次月考计算机基础、word.doc
三校生计算机第一次月考计算机基础.word 云南省高等职业技术教育招生考试试题 计算机基础.word基础知识(9月考试卷) 姓名:_ __ ____ 得分:____ ___ 一.单项选择题(在每小题给 ...
- Dapper基础知识三
在下刚毕业工作,之前实习有用到Dapper?这几天新项目想用上Dapper,在下比较菜鸟,这块只是个人对Dapper的一种总结. Dapper,当项目在开发的时候,在没有必要使用依赖注入的时候,如何做 ...
- Framebuffer基础知识(三十)
1.Framebuffer应用编程 在Linux系统中通过Framebuffer驱动程序来控制LCD.Frame是帧的意思,buffer是缓冲的意思,这意味着Framebuffer就是一块内存,里 ...
- 逻辑运算符,if、swtch语句(java基础知识三)
1.逻辑运算符的基本用法 * A:逻辑运算符有哪些 &(逻辑与) |(逻辑或) !(逻辑非) ^(逻辑异或) &&(短路与) ||(短路或) * 注意事项: * a:逻辑运算符 ...
- Profinet协议基础知识(三)
三.PROFINET IO设备 1.PROFINET IO设备类型 PROFINET IO设备可分为Device(从站).Controller(主站)与Supervisor(监视器). PROFINE ...
最新文章
- SAP MCH1表和MCHA表更新逻辑
- @codeforces - 1096G@ Lucky Tickets
- python处理列表中字典_Python 列表、元组、字典及集合操作详解
- 盘点20款主流应用FPS,最Skr帧率测试方法都在这里!
- hashset和hashmap有什么关系
- nexus下载 通过官网下载
- fh 幅频特性曲线怎么画fl_测量rc带通滤波器的幅频特性和相频特性-电子科技大学.ppt...
- 关于源级串联电感提高稳定性的理由
- 各层电子数排布规则_电子式排布规律
- perl novel可变剪接识别(3)
- gensim训练wiki中文词向量
- 春节不打烊,这份安全应急指南请收好!
- Hadoop 安全模式永久退出的方法
- Windows系统中 Xmanager 6 企业版下载安装激活教程
- python安装与pip安装
- 阿里首推“数据安全合作伙伴计划” 构建数据安全生态
- CAS原理分析及ABA问题详解
- 0x18 大容量存储器结构
- 区块链或能成为防范网络风险新招
- 获取axios返回的值
热门文章
- 探讨NDK编译错误ld.exe: Dwarf Error: mangled line number section.
- Server 2012 Hyper-v新功能之二:自动化支持技术
- .NET4.0 之 Dynamic VS Refle“.NET研究”ction 效率
- c#同类型操作最终得到的结果将是同类型
- Tensorflow框架:InceptionV3网络概念及实现
- leetcode 1310. 子数组异或查询(位运算)
- leetcode1448. 统计二叉树中好节点的数目(dfs)
- lambda 使用_如何使用Lambda和API网关构建API
- java 比特币私钥生成_如何生成自己的比特币私钥
- 吴恩达神经网络1-2-2_图神经网络进行药物发现-第1部分