精华内容
下载资源
问答
  • C语言#运算符

    2020-06-28 00:57:42
    C语言#运算符 引言 在类函数宏中(带参数宏)...注意双引号字符串中X被视为普通文本,而不是一个可被替换记号。 C语言允许在字符串中包含宏参数。在类函数宏中(带参数宏),#号作为一个预处理运算符,可以把

    C语言的#运算符

    在这里插入图片描述

    引言

    在类函数宏中(带参数的宏),#号作为一个预处理运算符,可以把记号转换成字符串。

    示例分析

    下面是一个类函数宏:

    #define PSQR(X) printf("The square of X is %d. \n",((X)*(X))
    

    假设这样使用宏:

    PSQR(8);
    

    输出为

    The square of X is 64.
    

    注意双引号字符串中X被视为普通文本,而不是一个可被替换的记号。

    C语言允许在字符串中包含宏参数。在类函数宏中(带参数的宏),#号作为一个预处理运算符,可以把记号转换成字符串。例如,如果x是一个宏形参,那么#x就是转换为字符串“x”的形参名 。这个过程称为字符串化

    示例:

    /* subst.c -- substitute in string */
    #include <stdio.h>
    #define PSQR(x) printf("The square of " #x " is %d.\n",((x)*(x)))
    
    int main(void)
    {
        int y = 5;
        
        PSQR(y);
        PSQR(2 + 4);
        
        return 0;
    }
    

    该程序的输出如下:

    The square of y is 25.
    The square of 2 + 4 is 36.
    

    调用第一个宏时,用“y”替换#x,调用第二个宏时,用"2 + 4"替换#x。ANSI C字符串的串联特性将这些字符串与printf()语句的其他字符串组合,生成最终的字符串。例如,第一次调用变成:

    printf("The square of ""y"" is %d.\n",((y)*(y)));
    

    然后,字符串串联功能将这三个字符串组合成一个字符串:

    "The square of y is %d.\n"
    

    注意,#的这种作用只有在类函数宏的替换体中才能发挥这种作用。


    参考资料:

    史蒂芬・普拉达. C Primer Plus (第6版) 中文版[M]. 人民邮电出版社, 2016.

    展开全文
  • #运算符

    2019-02-23 19:41:20
    #运算符 #也是预处理?是,你可以这么认为。那怎么用它呢? 别急,先看下面例子: #define SQR(x) printf(&...注意到没有,引号中字符 x 被当作普通文本来处理,而不是被当作一个可以被替换语言符号。 假如你...

    #运算符
    #也是预处理?是的,你可以这么认为。那怎么用它呢? 别急,先看下面例子:
    #define SQR(x) printf("The square of x is %d.\n", ((x)*(x)));
    如果这样使用宏:
    SQR(8);
    则输出为:
    The square of x is 64.
    注意到没有,引号中的字符 x 被当作普通文本来处理,而不是被当作一个可以被替换的语言符号。
    假如你确实希望在字符串中包含宏参数,那我们就可以使用“#”,它可以把语言符号转
    化为字符串。上面的例子改一改:
    #define    SQR(x)    printf("The square of "#x" is %d.\n", ((x)*(x)));
    再使用:SQR(8);
    则输出的是:
    The square of 8 is 64.
    很简单吧?相信你现在已经明白#号的使用方法了。

    ##预算符
    和#运算符一样,##运算符可以用于宏函数的替换部分。这个运算符把两个语言符号组
    合成单个语言符号。看例子:
    #define XNAME(n) x ## n
    如果这样使用宏:
    XNAME(8)
    则会被展开成这样:
    x8
    看明白了没?##就是个粘合剂,将前后两部分粘合起来

    展开全文
  • 下面是一个类函数宏: #define PSQR (X) printf("The square of X is %...引号中字符串中X被看作普通文本,而不是被看作一个可被替换语言符号。 1、利用宏参数创建字符串:#运算符 在类函数宏替换部分中,

    下面是一个类函数宏:

    #define PSQR (X) printf("The square of X is %d.\n",((X) * (X)));

    如果这样使用宏:

    PSQR(8);

    则输出为:

    The square of X is 64.

    引号中的字符串中的X被看作普通文本,而不是被看作一个可被替换的语言符号。

    1、利用宏参数创建字符串:#运算符

    在类函数宏的替换部分中,#符号用作一个预处理运算符,它可以把语言符号转化为字符串。例如,如果X是一个宏参量,那么#X可以把参数名转化为相应的字符串。该过程称为字符串化(stringizing)。例如:

    #define <stdio.h>
    #define PSQR(x) printf("The square of  " #x " is %d.\n",((x) * (x)))
    
    int main(void)
    {
        int y = 5;
    
        PSQR(y);
        PSQR(2 + 4);
        return 0
    }

    输出如下:

    The square of y is 25.
    The square of 2 + 4 is 36.

    第一次调用宏时,用"y"代替#x;第二次调用宏时,用"2  + 4"代替#x。ANSI C的字符串链接功能将这些字符串与printf()语句中的其他字符串组合以产生最终使用的字符串。例如,第一次调用变成:

    printf("The square of " "y" " is %d.\n",((y) * (y)));

    接着,字符串连接功能将这三个相邻的字符串转换为一个字符串:

    "The square of y is %d.\n"

    2、预处理器的粘合剂:##运算符

    和#运算符一样,##运算符可以用于类函数宏的替换部分。另外,##还可用于类对象宏的替换部分。这个运算符把两个语言符号组合成单个语言符号。例如:

    #define XNAME (n) x ## n

    这样下面的宏调用:

    XNAME(4)

    会展开成如下形式:

    x4

    程序如下:

    #include <stdio.h>
    #define SNAME (n) x ## n
    #define PRINT_XN (n) printf("x" #n " = %d\n", x ## n);
    
    int main(void)
    {
        int XNAME(1) = 14;  //变为 int  xi = 14;
        int XNAME(2) = 20;  //变为 int  x2= 20;
        PRINT_XN(1);           //变为printf("x1 = %d\n", x1);
        PRINT_XN(2);           //变为printf("x2 = %d\n", x2);
        return 0;
    }

    输出如下:

    x1 = 14
    x2 = 20

    参考书籍:C Primer Plus 第五版(Stephen Prata)
    展开全文
  • 多态性带来了一个问题,就是如何判断一个...instanceof 运算符用来判断一个变量所引用对象实际类型,注意是它引用对象类型,不是变量类型。请看下面的代码: 复制纯文本新窗口 public final class
    多态性带来了一个问题,就是如何判断一个变量所实际引用的对象的类型 。 C++使用runtime-type information(RTTI),Java 使用 instanceof 操作符。

    instanceof 运算符用来判断一个变量所引用的对象的实际类型,注意是它引用的对象的类型,不是变量的类型。请看下面的代码:
    1. public final class Demo{
    2. public static void main(String[] args) {
    3. // 引用 People 类的实例
    4. People obj = new People();
    5. if(obj instanceof Object){
    6. System.out.println("我是一个对象");
    7. }
    8. if(obj instanceof People){
    9. System.out.println("我是人类");
    10. }
    11. if(obj instanceof Teacher){
    12. System.out.println("我是一名教师");
    13. }
    14. if(obj instanceof President){
    15. System.out.println("我是校长");
    16. }
    17. System.out.println("-----------"); // 分界线
    18. // 引用 Teacher 类的实例
    19. obj = new Teacher();
    20. if(obj instanceof Object){
    21. System.out.println("我是一个对象");
    22. }
    23. if(obj instanceof People){
    24. System.out.println("我是人类");
    25. }
    26. if(obj instanceof Teacher){
    27. System.out.println("我是一名教师");
    28. }
    29. if(obj instanceof President){
    30. System.out.println("我是校长");
    31. }
    32. }
    33. }
    34. class People{ }
    35. class Teacher extends People{ }
    36. class President extends Teacher{ }
    运行结果:
    我是一个对象
    我是人类
    -----------
    我是一个对象
    我是人类
    我是一名教师

    可以看出,如果变量引用的是当前类或它的子类的实例,instanceof 返回 true,否则返回 false。
    展开全文
  • #运算符和##预算符

    2015-12-02 19:09:10
    “#”也是预处理?可以这样认为。那么怎么用它呢?看看下面的例子。#defineSQR(X)printf("thesquareofxis%d.\n",((x)*(x))如果这样使用宏:SQR(8);...注意到,引号中字符x被当作普通文本处理了,而不是当作一...
  • #运算符 ##预算符

    2011-12-19 21:53:12
    #也是预处理?是,你可以这么认为。那怎么用它呢? 别急,先看下面例子: #define SQR(x) printf("The square of x ...注意到没有,引号中字符 x 被当作普通文本来处理,而不是被当作一个可以被替换语言 符号。
  • #也是预处理?是,你可以这么认为。那怎么用它呢?别急,先看下面例子 #defineSQR(x) printf("Thesquareof x ...x被当作普通文本来处理,而不是被当作一个可以被替换语言符号。 假如你确实希望在字符
  • 例如,假设在Windows中有一个名为gofish.exe可执行程序和一个名为finshtale 的文本文件,则可以在命令提示符下输入下面命令: gofish <finshtale 这样,程序将从finshtale文件(而不是键盘)获取输入,< ...
  • 这些运算符的优先权也是一致的。赋值同样使用"="。 算术和字符 以下只有一种运算符是有关字符的: $a + $b :加 $a - $b :减 $a * $b :乘 $a / $b :除 $a % $b :取模(余数) $a . $b :字符串连接 逻辑和...
  • excel使用

    2012-11-25 17:06:01
    使用条件运算符也可以作为缩放数值强有力辅助方式,例如,如果所在单位生产几种产品,每个产品中只要几克某化合物,而一天生产几千个此产品,那么在编制使用预算时,需要从克转为千克、吨,这时可以定义下面的...
  • //下面是一个简单函数实现示例 Matrix sin(const Matrix &A){ switch(A.getDataType()){ case DOUBLE_MATRIX: Matrix B(DOUBLE_MATRIX,A.getNumDims(),A.getSizeDims(),NULL); for(int ii=0;ii<*(double *)...
  • 易语言考试题

    千次阅读 2013-03-21 09:23:24
    1.下面不是易语言运算符的是( ) A.% B.=? C.|| D.= 2.下列运算符中,优先级最高的是( ) A.* B.&& C.+ D.\ 3.在易语言中,下列数据表示无误且与其数据类型匹配的是( ) A.否:逻辑型 B.“243...
  • LINGO软件学习

    2009-08-08 22:36:50
    当你在windows下开始运行LINGO系统时,会得到类似下面的一个窗口: 外层是主框架窗口,包含了所有菜单命令和工具条,其它所有窗口将被包含在主窗口之下。在主窗口内标题为LINGO ...
  • flash shiti

    2014-03-14 10:32:41
    27.以下不是符号Symbol可选的类型的是: A. Moeie Clip B. Button C. Effect D. Graphic 28.Flash查看(View)菜单中,Go To→Next表示? A. 打开当前作品的第一个场景 B. 打开当前作品的上一个场景 C. 打开...
  • // 下面进行计算器整体布局,将calckeys和command画板放在计算器中部, // 将文本框放在北部,将calms画板放在计算器西部。 // 新建一个大画板,将上面建立command和calckeys画板放在该画板内 ...
  • 非常不建议直接粘贴Firefox或chrome里生成Xpath,这些浏览器在渲染页面会根据标准自动补全一些标签,如table标签会自动加上tbody标签,这样生成Xpath路径显然不是最通用,所以很可能就取不到值。所以,要使用...
  • C 预处理器

    2019-04-30 18:01:29
    C 预处理器不是编译器组成部分,但是它是编译过程中一个单独步骤 C 预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需预处理。 所有预处理器命令都是以井号(#)开头。它必须...
  • // 输入的是小数点,并且之前没有小数点,则将小数点附在结果文本框的后面 resultText.setText(resultText.getText() + "."); } else if (!key.equals(".")) { // 如果输入的不是小数点,则将数字附在结果...
  • 3.2 使用我编译器,下面的代码int i=7; printf("%dnn", i++ * i++); 返回49?不管按什么顺序计算, 难道不该打印出56吗? . . . . . . 13 3.3 对于代码int i = 3; i = i++; 不同编译器给出不同结果, 有为 3, 有...
  • 你必须知道495个C语言问题(PDF)

    热门讨论 2009-09-15 10:25:47
    3.2 使用我编译器,下面的代码int i=7; printf("%dnn", i++ * i++); 返回49?不管按什么顺序计算, 难道不该打印出56吗? . . . . . . 13 3.3 对于代码int i = 3; i = i++; 不同编译器给出不同结果, 有为 3, 有...
  • A 模数运算符 模数运算符 (%) 计算第二个操作数除第一个操作数后余数。所有数值类 型都具有预定义模数运算符。如 Console.WriteLine(5 % 2); Console.WriteLine(-5 % 2); Console.WriteLine(5.0 % 2.2); ...
  • Visual C++ 2008入门经典--详细书签版

    热门讨论 2013-02-02 16:07:15
    8.4.2 实现对运算符的完全支持 365 8.4.3 重载赋值运算符 368 8.4.4 重载加法运算符 372 8.4.5 重载递增和递减运算符 376 8.5 类模板 377 8.5.1 定义类模板 377 8.5.2 根据类模板创建对象 380 8.5.3 使用有...
  • arcgis工具

    2012-10-22 22:37:31
    可以用LIKE运算符不是 = 运算符)与通配符一起构建部分字符串查询。 例如,表达式 [STATE_NAME] LIKE 'Miss*'将在美国州名中选择Mississippi和Missouri。 *表示多个字符。 还比如,查询表达式 [OWNER_NAME] ...
  • 8.4.2 实现对运算符的完全支持 365 8.4.3 重载赋值运算符 368 8.4.4 重载加法运算符 372 8.4.5 重载递增和递减运算符 376 8.5 类模板 377 8.5.1 定义类模板 377 8.5.2 根据类模板创建对象 380 8.5.3 使用有...
  • 下面将详细描述C# 5.0和.NET Framework 4.5.1中一些新变化。 异步编程 阻塞UI对用户并不友好,如果UI不响应,用户就会不耐烦。也许读者在Visual Studio中也有这种经历。而Visual Studio在这方面好了许多,在许多...
  • DBX260中文说明书

    2013-04-24 11:07:35
    实用菜单方式和网络安装及管理是通过实用菜单实现,而不是程序组成部分。 3.2厂家程序导航 260 DriveRack单元自出厂时就带有25个精心设计路径结构厂家程序,它们完美适合于任何扩声及固定安装应用。这些...
  • def是一个二级指针,它指向的是一个一维数组的指针,数组的元素都是float. (2)double*(*gh)[10]; gh是一个指针,它指向一个一维数组,数组元素都是double*. (3)double(*f[10])(); f是一个数组,f有10个元素,元素都是...
  • C# 计算器

    热门讨论 2007-11-27 10:52:13
    * 在这里的no_1指的是按钮no_1,e是KeyUp事件 * no_1是按钮,参数格式正确;而e是KeyUp事件,也是事件的一种。KeyEventHandler当然也是EventHandler的一部分。 * 所以调用了之num_Click()后一切按照no_...
  • o 6.8 但是如果 NULL 值改变了, 比如在使用非零内部空指针机器上, 难道用 NULL (而不是 0) 不是更好吗? o 6.9 用预定义宏 #define Nullptr(type) (type *)0 帮助创建正确类型空指针。 o 6.10 这有点奇怪。...
  • 70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常! 48 71、说出一些常用的类,包,接口,请各举5个 49 72、java中有...

空空如也

空空如也

1 2 3
收藏数 45
精华内容 18
关键字:

下面不是文本运算符的是