宏插入到字符串常量

转自  http://blog.csdn.net/todd911/article/details/8943149

方法一:

[cpp] view plaincopy

  1. #include <stdio.h>
  2. #define PRINT(FORMAT,VALUE) \
  3. printf("the value is "FORMAT"\n",VALUE);
  4. int main(void){
  5. int x = 6;
  6. PRINT("%d",x+2);
  7. return 0;
  8. }

运行结果:

the value is 8

方法二:

[cpp] view plaincopy

  1. #include <stdio.h>
  2. #define PRINT(FORMAT,VALUE) \
  3. printf("the value of "#VALUE" is "FORMAT"\n",VALUE);
  4. int main(void){
  5. int x = 6;
  6. PRINT("%d",x+2);
  7. return 0;
  8. }

运行结果:

the value of x+2 is 8

代码中的#将变量转换成了字符串后输出。

最后再介绍一种#号的用法:

[cpp] view plaincopy

  1. #include <stdio.h>
  2. #define ADD_TO_SUM(SUM_NUMBER,VALUE) \
  3. sum##SUM_NUMBER += VALUE
  4. int main(void){
  5. int sum5 = 1;
  6. ADD_TO_SUM(5,1);
  7. printf("sum_5 is:%d\n",sum5);
  8. return 0;
  9. }

输出结果是:

sum_5 is:2

##将左右的符号连接成一个符号,使之成为一个变量,如果新组成的变量必须要存在于代码中。

时间: 2024-11-12 10:30:33

宏插入到字符串常量的相关文章

C#之CLR内存字符串常量池(string)

C#之CLR内存字符串常量池(string) 投稿:shichen2014 字体:[增加 减小] 类型:转载 时间:2014-08-04我要评论 这篇文章主要介绍了C#之CLR内存字符串常量池(string),对于学习和理解C#内存原理很有帮助,需要的朋友可以参考下 C#中的string是比特殊的类,说引用类型,但不存在堆里面,而且String str=new String("HelloWorld")这样的重装也说没有的. 我们先来看一个方法: ? 1 2 3 4 5 6 7 8 cl

字符串指定间隔长度插入指定字符串

最近碰到一个这样的需求,字符串指定间隔长度插入指定字符串,大概描述一下 有一字符串 “abcde12345fghig67890” ,我想指定间隔长度为5(这个是字符串长度能够被5整除),插入“/”字符串(字符串不限制长度). 最后返回结果“abcde/12345/fghig/67890” . 下面是我实现此功能代码,贴出来与大家讨论,我觉得写法太繁琐,看大家有没有更好实现方法. using System; using System.Collections.Generic; using Syste

Java中的字符串常量池

最近做到一个题目: 问题:String str = new String("abc"),"abc"在内存中是怎么分配的?    答案是:堆,字符串常量区. 题目考查的为Java中的字符串常量池和JVM运行时数据区的相关概念."abc"为字面量对象,其存储在堆内存中.而字符串常量池则存储的是字符串对象的一个引用. Java中的字符串常量池 Java中字符串对象创建有两种形式,一种为字面量形式,如String str = "droid&qu

string字符串常量池在内存中的位置

这里仅仅是举个简单的样例说明字符串常量池在内存中的位置. 闲言少叙,直接上代码. Java代码   <span style="font-size: large;">import java.util.ArrayList; public class Test { public static void main(String[] args) { String str = "abc"; char[] array = {'a', 'b', 'c'}; String

java字符常量与字符串常量的区别

形式上:字符常量是单引号引起的一个字符例:‘a’字符串常量是双引号引起的若干个字符"helloworld"含义上:字符常量相当于一个整形值(ASC||值),可以参加表达式运算,直接拿变量使用字符串常量代表一个地址值(该字符在内存中存放的位置)占内存大小:字符常量只占一个字节字符串常量占若干个字节字符型常量使用char型变量来存储字符串用char型的数组来存储 类型字符类型为char,字符串类型为string两者都是常量,区别于使用方法的不同

Java中字符串常量池的陷阱

public class TestCase { static String ab = "ab"; static String getA() { return "a"; } static String getAB() { return "ab"; } public static void main(String[] args) { // 1 String _ab = new String("ab"); System.out.pr

C++常量(C++数值常量、字符串常量、符号常量)

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'并不是字符串的一部分,它

Python学习总结4:字符串常量与操作汇总

参考博客:http://www.cnblogs.com/Camilo/archive/2013/09/21/3332267.html http://www.cnblogs.com/SunWentao/archive/2008/06/19/1225690.html 1. 字符串常量 string.digits:包含0-9的字符串    string.letters:包含所有大小写字母的字符串     string.lowercase:所有小写字母    string.printable:包含所有可

字符串常量池、堆、栈

String a="a"+"b"+"c" 创建了几个对象 这个问题涉及到了字符串常量池和字符串拼接 String a="a"+"b"+"c" 通过编译器优化后,得到的效果是 String a="abc" Java中字符串对象创建有两种形式,一种为字面量形式,如String str = "droid"; 另一种就是使用new这种标准的构造对象的方法,