苏州嘉盛建设工程有限公司网站,营销网站的设计思路,设计网站与建设,网站建设 应该付多少维护费呢隐式转换先看个例子int a {500};
unsigned b {1000};
std::couta-b;这里的输出结果并不为-500。因为最后输出结果的类型自动转换成了unsigned#xff0c;unsigned是正整数型类型转换顺序表(由高到低)long doubledoublefloatunsigned long long long longunsigned long…隐式转换先看个例子int a {500};
unsigned b {1000};
std::couta-b;这里的输出结果并不为-500。因为最后输出结果的类型自动转换成了unsignedunsigned是正整数型类型转换顺序表(由高到低)long doubledoublefloatunsigned long long long longunsigned long longunsigned intint 知识扩展*short、char之间计算不会互相转换而是转换成int再计算即使是同类型间计算也会先转换成int再计算C语言强制转换语法(int)(a-b)缺点维护时想要找到这个类型并不方便因为如果查找int类型如果到处都是这个int类型并不好找优点简单快捷直接直接转换C静态转换语法static_catint(a-b)优点相对安全由编译器检测是否能转换赋值转化用等于号赋值时会自动转换float b{500.00};
int ab;这里b会自动转换成int型思考为什么这里结果是个很大的整数#includeiostream
#includecassert
void main()
{int a{ 500 };unsigned b{ 1000 };std::cout (long long )(a-b);system(pause);
}
原因因为a-b得到的结果首先是个unsigned型的然后才被转换成了long long型 解决办法将(long long)(a-b) 改为 (long long)a - (long long)b这样 a 和 b 就会先被强制转换为 long long 类型sizeof关键字语法sizefo(int)