博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++学习积累(长期更新)——符号相关
阅读量:2123 次
发布时间:2019-04-30

本文共 958 字,大约阅读时间需要 3 分钟。

1、c++中的反斜杠符号 \ ——续行符 \

采用续行符后,被分割为上下两行的代码,在编译器编译时将会重新连接在一起。

在普通代码行后面加不加续行符都一样(VC是自动判断续行的),但是在宏定义里面就特别有用,因为宏定义规定必须用一行完成:

#define SomeFun(x, a, b) if(x)x=a+b;else x=a-b;

这一行定义是没有问题的,但是这样代码很不容易被理解,以后维护起来麻烦,如果写成:

#define SomeFun(x, a, b)

if (x)
x = a + b;
else
x = a - b;

这样理解是好理解了,但是编译器会出错,因为它会认为#define SomeFun(x, a, b)是完整的一行,if (x)以及后面的语句与#define SomeFun(x, a, b)没有关系。这时候我们就必须使用这样的写法:

#define SomeFun(x, a, b) \

if (x) \
x = a + b; \
else \
x = a - b;

注意:

最后一行不要加续行符啊。VC的预处理器在编译之前会自动将\与换行回车去掉,这样一来既不影响阅读,又不影响逻辑,皆大欢喜。
宏定义的反斜杠后不能有空格。

参考

2、static_cast

static_cast是一个c++运算符,功能是把一个表达式转换为某种类型,但没有运行时类型检查来保证转换的安全性。

用法:

static_cast < type-id >( expression )

举例:

template 
T1 add(T2 a, T3 b){
T1 ret; ret = static_cast
(a + b); return ret;}void main(){
int a = 1; float b = 0.1; cout << add
(a, b) << endl; //函数返回值需要在第一个参数类型中显式指定 cout << add
(a, b) << endl; system("pause");}

参考

转载地址:http://hkcrf.baihongyu.com/

你可能感兴趣的文章
(转)Java 程序员必备的高效 Intellij IDEA 插件
查看>>
局域网(内网)docker安装及代理访问
查看>>
软考 英语学习
查看>>
maven 文件上传到远程服务器目录
查看>>
shell 脚本免密远程访问
查看>>
Linux平台Oracle多个实例启动说明
查看>>
在LINUX平台上手动创建数据库(oracle 10g)(在一个oracle服务器上启动两个实例)
查看>>
Oracle 10g 下载地址
查看>>
Linux 下 新增Oracle10g 实例
查看>>
LRM-00123 ORA-01078
查看>>
ORA-01102: cannot mount database in EXCLUSIVE mode
查看>>
专栏结语
查看>>
BERT 实战
查看>>
BERT 基础
查看>>
什么是 Transformer
查看>>
简述 XLNet 的原理和应用
查看>>
实战:为图片生成文本摘要
查看>>
论文复现:用 CNN 进行文本分类
查看>>
多复杂的 CNN 都离不开的这几个基本结构
查看>>
实践:动手搭建神经机器翻译模型
查看>>