http://see.xidian.edu.cn/cpp/biancheng/view/104.html

字符串常量

用双撇号括起来的部分就是字符串常量,如"abc","Hello!","a+b","Li ping"都是字符串常量。字符串常量"abc"在内存中占4个字节(而不是3个字节),见图2.5。

 


2.5

编译系统会在字符串最后自动加一个'\0'作为字符串结束标志。但'\0'并不是字符串的一部分,它只作为字符串的结束标志。如
 
 cout<<"abc"<<endl;
输出3个字符abc,而不包括'\0'。

注意: "a"和'a'代表不同的含义,"a"是字符串常量,'a'
是字符常量。前者占两个字节,后者占1个字节。请分析下面的程序片段:
    char c;  //定义一个字符变量
   
c='a';  //正确
    c="a"; 
//错误,c只能容纳一个字符

请思考:字符串常量"abc\n"包含几个字符?不是5个而是4个字符,其中"\n"是一个转义字符。但它在内存中占5个字节(包括一个"\0"字符) 。编译系统遇到"\"时就会把它认作转义字符的标志,把它和其后的字符一起作为一个转义字符。

如果"\"后面的字符不能与"\"组成一个合法的转义字符(如"\c"),则在编译时显示出错信息。如果希望将"\"字符也作为字符串中的一个字符,则应写为"abc\\n",此时字符包括5个字符,即a,b,c,\,n。如果有以下输出语句:
 
  cout<<"abc\\\n"<<endl;
则会输出:
    abc\  (然后换行)
同理执行
   
cout<<"I say \"Thank you!\"\n";
的输出是:
    I say "Thank
you!"

如果在一个字符串中最后一个字符为"\",则表示它是续行符,下一行的字符是该字符串的一部分,且在两行字符串间无空格。如
   
cout<<"We must study C\  //本行最后的"\"后面的空格和换行均不起作用
   ++ hard!";
 //本行的字符紧连在上一行最后的"\"前面字符之后
则输出:
    We must study C++ hard!

符号常量

为了编程和阅读的方便,在C++程序设计中,常用一个符号名代表一个常量,称为符号常量,即以标识符形式出现的常量。

【例2.3】符号常量的使用。

 #include <iostream>
using namespace std;
#define PRICE 30 //注意这不是语句,末尾不要加分号
int main ( )
{
int num,total;
num=;
total=num * PRICE;
cout<<"total="<<total<<endl;
return ;
}

C++常量(C++数值常量、字符串常量、符号常量)的更多相关文章

  1. extern字符串常量,宏定义字符串常量,怎么选

    在使用常量的时候,我看到主要有两种写法: #define RKLICURegexEnumerationOptionsErrorKey @"RKLICURegexEnumerationOpti ...

  2. Java中String字符串常量池总结

    最近到广州某建站互联网公司面试,当时面试官问假设有两个字符串String a="abc",String b = "abc";问输出a==b是true还是fals ...

  3. Java中字符串相加和字符串常量相加区别

    有一道这样的程序: public class TestStringDemo { public static void main(String[] args) { String s1 = "P ...

  4. Java中String字符串常量池

    首先看一个例子,通过这个例子更能快速理解String常量池 public static void main(String[] args) { String a = "ab"; St ...

  5. Java字符串常量池是什么?为什么要有这种常量池?

    简单介绍 Java中的字符串常量池(String Pool)是存储在Java堆内存中的字符串池.我们知道String是java中比较特殊的类,我们可以使用new运算符创建String对象,也可以用双引 ...

  6. Java中的常量池(字符串常量池、class常量池和运行时常量池)

    转载. https://blog.csdn.net/zm13007310400/article/details/77534349 简介: 这几天在看Java虚拟机方面的知识时,看到了有几种不同常量池的 ...

  7. Java进阶——Java中的字符串常量池

    转载. https://blog.csdn.net/qq_30379689/article/details/80518283 字符串常量池 JVM为了减少字符串对象的重复创建,其内部维护了一个特殊的内 ...

  8. JVM字符串常量池StringTable

    String的基本特性 String:字符串,使用一对""引起来表示. String sl = "hello"://字面量的定义方式: String s2 = ...

  9. Class常量池、运行时常量池、字符串常量池的一些思考

    Class常量池.运行时常量池.字符串常量池 class常量池 java代码经过编译之后都成了xxx.class文件,这是java引以为傲的可移植性的基石.class文件中,在CAFEBABE.主次版 ...

随机推荐

  1. The Cow Lexicon

    The Cow Lexicon Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8815 Accepted: 4162 Descr ...

  2. Network Saboteur 分类: 搜索 POJ 2015-08-09 19:48 7人阅读 评论(0) 收藏

    Network Saboteur Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 10147 Accepted: 4849 Des ...

  3. opencv的实用研究--分析轮廓并寻找边界点

    opencv的实用研究--分析轮廓并寻找边界点 ​      轮廓是图像处理中非常常见的.对现实中的图像进行采样.色彩变化.灰度变化之后,能够处理得到的是“轮廓”.它直接地反应你了需要分析对象的边界特 ...

  4. pip命令使用国内pypi镜像源加速在线安装

    参考:http://www.cnblogs.com/yudar/p/4444097.html 用easy_install和pip来安装第三方库很方便 它们的原理其实就是从Python的官方源pypi. ...

  5. Scrapy学习教程

    http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/tutorial.html 在线学习教程: http://learnpythonthehardway ...

  6. linux 帮助命令

    帮助命令 man(manual) 可以用来查看1 命令 2 配置文件 格式 man ls 1 查看命令 看第一行NAME 如果要看-l ,那么直接输入/-l 2 查看配置文件 man 查看配置文件信息 ...

  7. centos6.5用户管理

    一.centOS6.5用户管理命令 useradd 新增用户 userdel  删除用户 passwd  修改用户密码 二.命令的使用 useradd useradd admin userdel us ...

  8. Xcode关闭ARC

    开启了ARC则不能显示调用dealloc/retain/release等手动内存管理操作,所以很多情况下需要关闭. Xcode中有两种途径可以关闭ARC. 1.创建项目时将ARC选项的勾取消掉. 2. ...

  9. shell 中的>文件重定向符 和 标准输入、输出、错误以及 2&1 的含义*

    http://www.cnblogs.com/chenmh/p/5382044.html 问:其中 的2>&1是怎么回事? . test.sh > test.log 2>&a ...

  10. Duilib动画按钮实现(转载)

    转载:http://blog.csdn.net/cuiguanghui123/article/details/51674218 .h文件 #ifndef __UIBUTTONEX_H__ #defin ...