C++初学者指南第一步---8.类型系统(基础)

C++初学者指南第一步---8.类型系统(基础)

文章目录

1.用const声明常量

语法:

复制代码
Type const variable_name = value;
类型 const 变量名 = 值
  • 值一经分配就无法更改
  • 初始值可以是动态的(= 在运行时设置)
java 复制代码
int i = 0;
cin >> i;
int const k = i;  // "整形常量"
k = 5;  //  编译错误: k是const!

注意:如果你不需要在初始赋值后改变变量的值,总是将变量声明为const !

  • 避免错误:如果稍后不小心更改值,则不会编译。
  • 有助于更好地理解代码:清楚地传达值在代码中将保持不变。
  • 可以提高性能(可能进行更多编译器优化)

2.类型别名

语法:

复制代码
using NewType = OldType;  //C++11
typedef OldType NewType;  //C++98
java 复制代码
using real = double;
using ullim = std::numeric_limits<unsigned long>;
using index_vector = std::vector<std::uint_least64_t>;

注意:比起过时且模棱两可的类型定义,我们更喜欢更强大的using(稍后我们将看到原因)!

3.类型推导 auto

语法:

复制代码
auto variable = expression;
  • 从赋值符右侧推导出的变量类型。

  • 通常更方便、更安全、更面向未来。

  • 对于泛型(与类型无关)编程也很重要。

    auto i = 2; // int
    auto u = 56u; // unsigned int
    auto d = 2.023; // double
    auto f = 4.01f; // float
    auto l = -78787879797878l; // long int
    auto x = 0 * i; // x : int
    auto y = i + d; // y : double
    auto z = f * d; // z : double

4.常量表达式:constexpr (C++11)

  • 在编译时必须能够进行计算

  • 如果不在常量表达式上下文中调用,可以在运行时计算

  • 在常量表达式上下文中,所有的表达式本身必须是常量表达式。

  • constexpr 函数可能包含:
    只有一个返回语句 (C++11)
    多个语句 (C++14)

    // 两个简单函数:
    constexpr int cxf (int i) { return i2; }
    int foo (int i) { return i
    2; }
    constexpr int i = 2; // OK '2' 是字面量
    constexpr int j = cxf(5); // OK, cxf是常量表达式
    constexpr int k = cxf(i); // OK, cxf 和 i 是常量表达式
    int x = 0; // 不是常量表达式
    int l = cxf(x); // OK, 不是一个常量表达式上下文
    // 常量表达式上下文:
    constexpr int m = cxf( x ); //
    constexpr int n = foo( 5 ); //

附上原文链接

如果文章对您有用,请随手点个赞!^_^

相关推荐
xiangyun619 小时前
C++ list 模拟实现(二):const迭代器与反向迭代器,模板的黑魔法
开发语言·数据库·c++·算法·stl·list
DLite10 小时前
NLang 0.9.0发布:成为可嵌入语言
开发语言·编程语言·编译技术·nlang
有同事要进步10 小时前
LeetCode 14. 最长公共前缀:纵向扫描一次讲透
开发语言·python
修船大队长10 小时前
CanNm 从休眠唤醒后重复消息报文的周期与数量分析
开发语言·php
事圆则缓10 小时前
Kotlin 变量与函数:把页面状态和行为写成清楚的契约
android·开发语言·kotlin
silvamux_10 小时前
豆包 API 调用教程:Python 接入可跑通示例
开发语言·python
wdfk_prog10 小时前
LWIP教程 15:IPv4 与 IPv6——从网络层工作原理到嵌入式工程取舍
运维·开发语言·网络·笔记·学习·智能路由器·ip
棉猴10 小时前
玩游戏学Python10-算术运算符应用2
开发语言·python·玩游戏·游戏编程
tachibana210 小时前
Go 语言的 Map 是否是并发安全的?
开发语言·数据结构·后端·golang·go·语言
后除10 小时前
Go 实战: 使用 Wails v2.15 构建轻量级的桌面应用 - 仿微信登录界面
开发语言·微信·golang