营销推广网站建设,北京seo网站推广费用,简单的网站设计怎么做,深圳 网站制作constexpr
提到constexpr#xff0c;我们会发现它和const类比
常和const类比constexpr符号常量必须给定一个在编译时已知的值#xff0c; 若某个变量初始化时的值在编译时未知#xff0c;但初始化后绝不变。
#includeiostream
#includevector
#include我们会发现它和const类比
常和const类比constexpr符号常量必须给定一个在编译时已知的值 若某个变量初始化时的值在编译时未知但初始化后绝不变。
#includeiostream
#includevector
#includestring
#includecmath
#includealgorithm//1.constexpr and type{value}
int main()
{// 定义常量pi值为3.1415926constexpr double pi 3.1415926;// 错误不能修改constexpr变量的值pi 8;// 定义变量r值为2.0double r 2.0;// 计算圆的周长并赋值给变量c// 公式为周长 2 * π * rdouble c 2*pi*r;
}记住给常量赋值时的错误。
类型转换
5/2结果是2不是2.5 ———整型除法余数被丢弃 5.0/2.0结果是2.5 ——————浮点型除法余数被保留 但是遇到这种混合型的呢 2.5/2 计算的结果准确性是第一位的站在保证数据精确这个角度来说肯定按照靠近存储大的类型来处理它不会丢失数据的精确度。 2.5/2等同于2.5/double(2):算术表达式子中有double型数据的话就按照浮点型计算结果也是double型否则使用整型算术计算结果为int型。
记号type(value)和type{value}表示“将value转换为type类型就像用值alue来初始化type类型的变量一样,使用type{value}可以防止窄化转换而type(value)不能。
根据上述理论当遇到混合类型ing运算时d/i会被编译器自动转换成d/double(i) 结果为double类型c2出现了double类型转换int类型的窄化转换数据精确度丢丢失而c3这里用了{}处理防止这个double类型转换成前面的int类型保证数据的安全。
窄化转换错误如下
题目摄氏度与华氏温度的转化9/5这里就严重丢失数据
选择语句
if statement
#includestd_lib_facilities.h
//3.if statement
int main()
{constexpr double cm_per_inch 2.54;double length 1;char unit 0;cout Please enter a length followed by a unit (c or i):\n;cin length unit;if (unit i)cout length in is length*cm_per_inch cm\n;else if (unit c) cout length cm is length / cm_per_inch in\n;else cout Sorry,I dont know a unit called unit \n;
}
值的注意的是else-if 不是C语法这是由两个if-else组合而且成的
switch statement
int main()
{constexpr double cm_per_inch 2.54;double length 1;char unit 0;cout Please enter a length followed by a unit (c or i):\n;cin length unit;switch (unit){casei:cout length in is length*cm_per_inch cm\n;break;casec: cout length cm is length / cm_per_inch in\n;break;default:cout Sorry,I dont know a unit called unit \n;break;}
}关于switch语句相关的技术细节
switch括号里面必须是整型字符型和枚举型特别地不能使用字符串型。case语句中的值必须是常量表达式不能使用变量。不能在两个case语句中使用相同的数值。允许在一个case语句中使用多个case语句中使用多个case常量。不要忘记在每个case语句末尾加上break。注意:编译器不会给出末尾加break的任何警告信息