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. PostgreSql安装

    官网:http://www.postgresql.org/download/linux/redhat/ 一.安装 由于我的机子是centos6.2,所以选择RedHat的. 按照官网所说的进行安装: ...

  2. MFC设置对话框大小

    设置对话框大小不可改变 1.在类的头文件中加入函数申明 (.h文件) afx_msg void OnGetMinMaxInfo(MINMAXINFO *lpMMI); 2.在消息映射中添加 (.cpp ...

  3. IDEA -14 注册码生成工具

    import java.math.BigInteger; import java.util.Date; import java.util.Random; import java.util.zip.CR ...

  4. 15款开源PHP类库

    PHP库给开发者提供了一个标准接口,它帮助开发者在PHP里充分利用面向对象编程.这些库为特定类型的内置功能提供了一个标准的API,允许类可以与PHP引擎进行无缝的交互.此外,开发者使用这些类库还可以简 ...

  5. redis pool

    Redis Pool--Java 配置文件 #redis conf ADDR=127.0.0.1 PORT= AUTH= #session timeout TIMEOUT= MAX_ACTIVE= M ...

  6. 解决This function or variable may be unsafe

    工程名字右键属性-->C/C++-->预处理器-->预处理器定义-->加入:_CRT_SECURE_NO_WARNINGS

  7. .Net使用微軟自帶的用戶驗證和登錄授權

    使用微軟的用戶驗證,權限管理的方法 一.使用配置好的數據庫, 1.首先建立想定的數據庫(只填寫名字不加載任何表,如:Login數據庫) 2.使用vs兼容工具命令提示.如圖: 3.導入數據庫所需要的ta ...

  8. c# SendMail

    using System; using System.Collections.Generic; using System.Net; using System.Net.Mail; using Syste ...

  9. UVA 590 二十一 Always on the run

     Always on the run Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit ...

  10. Cheatsheet: 2014 04.01 ~ 04.30

    Java 115 Java Interview Questions and Answers – The ULTIMATE List 3 Good Reasons to Avoid Arrays in ...