bool类型
true(非0), false(0)
#include <iostream> int main() { bool isAlpha; isAlpha = false; if (!isAlpha) { std::cout << "isAlpha=" << isAlpha << std::endl; std::cout << std::boolalpha << "isAlpha=" << isAlpha << std::endl; } return 0; }
boolalpha函数:可用来查看数据类型
空指针(nullptr)
C++11中引入保留字“nullptr”作为空指针 |
C++03中,空指针使用“0”来表示。0既是一个常量整数,也是一个常量空指针。 |
C语言中,空指针使用(void *)0来表示 |
有时候,用“NULL”来表示空指针(一种可能的实现方式是 #define NULL 0 ) |
auto x{ 10 };//auto 是c++11里定义的新的类型名,根据x的值来模糊化定义x的类型,此语句等于int x=10; int* q{ nu1lptr };//这种初始化值的方法是c++11中初始化列表的方式,等于int* q = nullptr; q=&x;
类型转换
语言 | 转换方式 |
c | 语法:(type) value 例子:printf("%d", (int) 2.5); |
c++ | 语法:static_cast<type> value 例子:out << static_cast<double>(1) / 2; |
注意运算的优先级:
std::cout << static_cast<double>(1) / 2 << std::endl;//输出0.5 std::cout << static_cast<double>(1 / 2) << std::endl;//输出0 std::cout << 1.0f / 2. << std::endl; //输出0.5
类型系统
先介绍一个概念:计算机程序构造块是不同大小粒度的计算机程序组成部分,它包括变量、表达式、函数或者模块等。
在编程语言中,“类型系统”是将“type”属性指定给不同计算机程序构造块的规则集。这些类型规范并强制程序员用于数据结构和组件的其它隐式类别(e.g. "string", "array of float", "function returning boolean").
优点:类型系统可以通过 1 定义不同程序块间的接口、2 检查多个块之间是否以一致的方式连接在一起的办法减少程序中可能出现的bug。
静态类型 v.s. 动态类型 :程序设计语言的类型系统机制会检查连接在一起的多个块的一致性。上述检查若发生在编译期,称为静态类型上述检查若发生在运行时,称为动态类型;上述检查若同时存在于编译期和运行时,称为混合类型。