1
运算符
C++
中的运算符
(
operator
)可以将一个或多个运算对象(
operand
)组合起来得到一个结果。
C++
中算数运算符
+
、
-
、
*
和
/
分别表示加法、减法、乘法和除法。对于除法运算符,当运算对象是整数时,其运算结果还是整数,也就是说,如果结果中包含小数,则直接舍弃。例如
int ival = 21/6;
int ival1 = 6/21;
此时,
ival
的值是
3
,而
ival1
的值是
0
。
2
运算时的类型转换
在对运算对象进行运算时,运算对象常常由一种类型转换成另外一种类型。例如
int ival = 3.1 + 3;
此时,
C++
语言不会将两个不同类型的运算对象的值相加,而是先根据转换类型规则将运算对象的类型统一后再求值。求值所遵循的转换类型规则可以简单概括为避免精度损失。所以,此时,运算对象
3
会被转换成
double
类型,然后执行浮点数加法,所得结果的类型是
double
。
在
CSDN
论坛中,由朋友将华氏温度转换成摄氏温度时,用到如下表达式
C=5/9*(F-32);
其中,
C
表示摄氏温度,
F
表示华氏温度。使用该表达式时,无论华氏温度
F
的值是多少,计算得到的摄氏温度
C
的值都是
0
。
其中的主要原因即为
“
1
运算符”中提到的,除法运算符在运算整数时,其结果只取整数部分,所以表达式中的“
5/9
”的值一直是
0
。
根据
“
2
运算时的类型转换”中提到的类型转换规则,可以将除法表达式的操作数中的任意一个改为
double
类型,则其结果可以转换为
double
类型,如
C=5.0/9*(F-32);
C=5/9.0*(F-32);
1 运算符C++中的运算符(operator)可以将一个或多个运算对象(operand)组合起来得到一个结果。C++中算数运算符+、-、*和/分别表示加法、减法、乘法和除法。对于除法运算符,当运算对象是整数时,其运算结果还是整数,也就是说,如果结果中包含小数,则直接舍弃。例如int ival = 21/6;int ival1 = 6/21;此时,ival的值是3,而ival1的值是0。2 运算...
C语言存在两种
类型转换
(隐式转换,显式转换)
隐式转换,是针对不同类型之间的赋值和
运算
,函数调用传递参数 这些的转换都是由编译器自动完成char ch;
int i=ch;
显式转换 由程序员在变量前面添加型转换 char *pc=(char *)pb void *ps=(void*)pa
C++
中
的
类型转换
* 通过上述的两种方式,C语言大部分的
类型转换
都可以顺利进行,
C++
继承
在C语言
中
我们谈及类型转化,不外乎有有两种隐式转化,编译器自动把你进行类型转化和强制转化。自己手动的对类型进行了转化。但是
C++
中
对于类型的转化有了更严谨和更强化的分类。
1
类型转换
名称和语法
C风格的强制
类型转换
(Type Cast)很简单,不管什么类型的转换统统是:TYPE b = (TYPE)a 颇有一种一招鲜吃遍天的感觉。
C++
风格的
类型转换
提供了4种
类型转换
操作符来应对不同...
文章目录C语言
中
的
类型转换
为什么
C++
需要四种
类型转换
C++
强制
类型转换
static_cast
类型转换
reinterpret_castconst_castdynamic_cast
C语言
中
的
类型转换
在C语言
中
,如果赋值
运算符
左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与接收返回值类型不一致时,就需要发生类型转化,C语言
中
总共有两种形式的
类型转换
:隐式
类型转换
和显式
类型转换
。
隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译失败。
显式类型转化:需要用户自己处理
C++
类型转换
一 隐式
类型转换
在
C++
语言
中
,某些类型之间有关联。如果两种类型有关联,那么当程序需要其
中
一种类型类型的
运算
对象时,可以用另一种关联类型的对象或者值来替代。
Intival = 3.4 + 3; //编译器提示损失精度
加法的两个
运算
对象类型不同:3.4为double类型,3位int类型。
C++
不会将两个不同类型的值直接相加,而
在
C++
中
,如果两种类型有关联,那么就可以相互转换(conversion)。
以加法
运算
为例,
C++
不会将两个不同类型的值相加,而是先根据
类型转换
规则
设法先将
运算
对象统一后在求值。上述的
类型转换
是自动执行的,无须程序员的介入,因此被称为隐式转换(implicit conversion)。
算术类型之间的隐式转换被设计得尽可能避免损失精度,例如,如果表达式
中
既有整数类型也有
浮点数
类型,那么整型会
自动转换
规则
:
1、若参与
运算
量的类型不同,则先转换成同一类型,然后进行
运算
。
2、转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型
运算
时,先把int量转成long型后再进行
运算
。 a、若两种类型的字节数不同,转换成字节数高的类型 b、若两种类型的字节数相同,且一种有
符号
,一种无
符号
,则转换成无
符号
类型
3、所有的浮点
运算
都是以双精度进行的,即使仅含float单精度量
运算
的表达式,也要先转换成double型,再作
运算
。
4、char型和short型参与
运算
时,必须先转换
学习各种语言,必须要有扎实的基础知识。C和
C++
有很多灵活性的东西,所以在编程时一定要牢记这些知识点。
->不同类型数据间的混合
运算
中
的自动
类型转换
。
当一个表达式
中
有不同的数据类型参加时,默认情况下会进行自动
类型转换
。转换过程当
中
以
运算
中
最高级别为准。
其
中
横向箭头是必定发生的转换。纵向箭头是可以直接越级的。
运算
过程
中
,当参与
运算
的操作数类型不同时,可进行
类型转换
。包括:自动转换和强制转换。
自动
类型转换
指在算术
运算
以及在赋值过程
中
,如果
运算符
两边的操作数属于“类型相容”(指类型不同但系统可以自动进行转换)的情况,如整数、字符和实数之间,系统会自动进行
类型转换
,然后再做
运算
。包括:算术
类型转换
、赋值
类型转换
。
一.混合
运算
的
类型转换
当
运算符
两边的操作数类型不同但类型相容时,系统自动将不