温州市城市建设学校网站,网站建设模版文档,wordpress设置样式,wordpress 标题重复布尔类型
C语言在其标准化过程中引入了bool、true和false关键字#xff0c;增加了原生数据类型来支持布尔数据。
布尔类型的大小#xff08;所占的存储空间#xff09;依赖于具体的编译器实现。也可以用 sizeof运算符得到其占用的空间
Conversion between bool and int 0…布尔类型
C语言在其标准化过程中引入了bool、true和false关键字增加了原生数据类型来支持布尔数据。
布尔类型的大小所占的存储空间依赖于具体的编译器实现。也可以用 sizeof运算符得到其占用的空间
Conversion between bool and int 0 - false // 整数0和布尔false互相转化 true -1 // 布尔true转化为整数1 non-zero - true // 任意非0整数转化为布尔true ‘字符’-true 编码规范 1、The prefix is should be used for boolean variables and methods. 布尔变量/函数的命名应使用前缀“is” 例如isSet, isVisible, isFinished, isFound, isOpen
2、The incompleteness of split lines must be made obvious. 断行必须很明显。 在逗号或运算符后换行新行要对齐
示例
#includeiostream
using namespace std;
int main()
{bool isAlpha;isAlpha false;if (!isAlpha){cout isAlpha isAlpha endl;//boolalpha使bool变量输出按照字符输出cout boolalpha isAlpha isAlpha endl;}return 0;
}练习
//与运算
bool x 1 2;
答案x true;//按照位进行与运算
// 01
//10
// 00
bool x 1 2;
答案x false;List Initialization列表初始化 Before C11 (C11标准之前的初始化方法)int x 0;
int y(2);
char c(a);
int arr[] { 1,2,3 };
char s[] Hello;2、After C11
/直接列表初始化)
/* Variable initialization */
int x{}; // x is 0;
int y{ 1 }; // y is 1;
/* Array initialization */
int array1[]{ 1,2,3 };
char s1[ 3 ] { o, k };
char s3[]{ Hello };
//拷贝列表初始化
/* Variable initialization */
int z { 2 };
/* Array initialization */
int array2[] { 4,5,6 };
char s2[] { y,e,s };
char s4[] { World };
char s5[] Aloha; // Omit curly braces (省略花括号)注意列表初始化不允许“窄化”即不允许丢失数据精度的隐式类型转换 问题初始化列表与 std::initializer_list有什么关系 列表初始化是一个形象的说法当我们使用{}的时候实际上就是在使用列表初始化的功能实际上当我们在使用花括号的时候此时编译器会将这些内容传化成一个临时对象initializer_list是一个类型就向大家所说的那样初始化列表会编译成initializer_list 也许看着名字很生疏但是其实在我们平常的使用中就曾涉及这个东西请大家想想在我们使用printf的时候传递的变量参数不可能始终一只这就给函数带来了形式参数的个数的不确定性因此引入initializer_list解决这个问题当然initializer_list的作用不止如此大家可以看一下这个例子
//initializer_list的作用为解决传递参数数量不唯一通过initailizer_list创建临时对象将参数值传递给函数
#include void print(std::initializer_list list) { for (auto it list.begin(); it ! list.end(); it) {std::cout *it ; }std::cout std::endl;
}int main() {print({ 1, 2, });
}Type conversion 类型转换
C风格强制类型转换
printf(%d, (int) 2.5);C风格强制类型转换
cout static_castdouble(1) / 2 endl;
cout static_castdouble(1 / 2) endl;result: 0.5 0 编码规范 1、Type conversions must always be done explicitly. Never rely on implicit type conversion. 类型转换必须显式声明。永远不要依赖隐式类型转换 例如floatValue static_cast(intValue); // NOT: floatValue intValue;
问题reinterpret_cast和const_cast有什么用
//const_cast用于去除指针变量的常量属性。
const int* a;
int* p a;//此时是报错的报错原因是const int * 类型的值不能用于初始化 int * 类型
//因此为了解决这个问题const_cast便派上用场
//我们这里可以这样
int* pr const_castint*(a)//此时便能获取成功也就是所说的去除指针变量的常量属性//reinterpret_cast翻译下来就是重新解释转型主要是指针
//reinterpret_cast的作用是不改变指针地址仅仅是使编译器改变解释属性
//举个例子
int n 1024;
int* p n;//
cout *p;//这里的结果显然会输出1024
//此时我们使用reinterpret_cast
double* pp reinterpret_castdouble*(n);
cout *pp;//这里输出的结果将是double类型的值但是地址指针的地址并未发生改变仅仅是解释的方法发生了改变