什么是双目运算符?

什么是双目运算符?,第1张

双目运算符是指运算所需变量为两个的运算符,或者要求运算对象的个数是2的运算符称为双目运算符;运算所需变量为一个的运算符叫单目运算符,例如【!,~,()】;运算所需变量为三个的运算符叫三目运算符:【?:】

乘法运算符【*】、除法运算符【/】、取余运算符【%】 、加法运算符【+】、减法运算符【-】。

扩展资料:

初等运算符 :下标运算符【[]】、分量运算符的指向结构体成员运算符【->】、结构体成员运算符【.】

关系运算符:等于运算符【==】、不等于运算符【!=】 、关系运算符【<><= >= 】

逻辑运算符:逻辑与运算符【&&】 、逻辑或运算符【||】、逻辑非运算符【!】

位运算符:按位与运算符【&】、按位异或运算符【^】 、按位或运算符【|】、左移动运算符【<<】、右移动运算符【>>】

参考资料来源:

百度百科-双目运算符

单目运算符是指运算所需变量为一个的运算符,即在运算当中只有一个 *** 作数,又叫一元运算符,其中有逻辑非运算符:!、按位取反运算符:~、自增自减运算符:++, --等。

运算所需变量为两个的运算符叫做双目运算符,或者要求运算对象的个数是2的运算符称为双目运算符。

逻辑非运算符【!】、按位取反运算符【~】、自增自减运算符【++, --】、负号运算符【-】、类型转换运算符【(类型)】、指针运算符和取地址运算符【*和&】、长度运算符【sizeof】

扩展资料:

一些只需要一个 *** 作数的运算符称为一元运算符(或单目运算符)。

例:5 + 6 和 5++ ------在C语言中,5++是非法的。

前者5 和 6为 *** 作数+ 为运算符,但是 + 需要两个 *** 作数,所以它不是一元运算符,而是二元运算符,而后者只需要一个 *** 作数,所以 ++ 为一元运算符。

一元运算符有:"delete"、”sizeof"、“void”、'+'——正号,'-'——负号,'!', '++', '--' , '~'——位非,返回数字的非。

1.

双目运算概念

双目运算由双目运算符和参与运算的运算量构成。所谓双目运算符是指该运算符的左右两侧都必须有运算量。

常见的双目运算符有:+、-、*、/、%等。诸如x+y、x/y、x*y等运算均为双目运算。

2.

双目运算的要点

遇到双目运算,主要注意数据类型问题。具体有以下几点:

(1)

C语言要求:参与双目运算的两个运算量的类型必须一致;

(2)

双目运算的结果的类型必须与运算量的类型一致;

(3)

如果参与双目运算的两个运算量类型不一致,系统将自动把其中的一个进行类型转换,使两个运算量的类型一致后再进行运算。

自动转换的规则是:按“向高看齐”的原则进行转换。在几个基本的数据类型中,由高到低的排列顺序为:double,int,char。

比较:赋值运算中的类型转换

在赋值运算中,若遇到赋值号两侧的数据类型不一致,则也存在自动类型转换的问题,不过,它的转换规则与双目运算符的转换规则有所不同,它是按“向左看齐”的原则进行转换的,也即,是将赋值号右侧的量先转换为左侧的类型,然后再进行赋值。如有

int

x

x=1.9

则先将1.9转换为int型,变为1后再赋值给x。再如,double

y

y=2

则先将2转换为2.0,然后再赋值给y,结果y的值为2.0。

举例说明:

(1)

表达式

3+2

中,3和2类型一致(都是整型),符合双目运算的类型一致要求,所以直接运算,结果为5,也是整型。

(2)

表达式

3/2

中,3和2类型一致(都是整型),符合双目运算的类型一致要求,所以直接运算,但要注意,由于两个运算量都是整型,所以运算结果也必须是整型,3除以2的整数部分为1,所以3/2的结果是1,而不是2,更不是1.5,这是整数除法中特别要注意的地方。

又如19/5的整数部分是3,尽管其小数部分为0.8(超过了0.5),但19/5的结果仍然应该等于其整数部分的值3,而不能进行四舍五入变为4。

(3)

表达式

1.0+3

中,量个运算量的类型不一致,所以不能直接进行加法运算,必须先将整数3转换为double型常量3.0(注意,C中实数常量均为double型,而不是float型!),使表达式变为

1.0+3.0,然后才能进行加法运算,运算结果为4.0(不能写成整型4)。

又如,表达式

1.0+3/2

中,由于/运算符的优先级比+高,所以先运算3/2,刚才已经讲过,3/2的值应该为1,于是整个表达式变为

1.0+1(注意不要因为前面有一个1.0而把3/2的结果当作为1.5!),然后再将1作类型转换,变为1.0,最后再运算1.0+1.0,结果为2.0。

上述例子中的运算量均为常量,遇到变量时运算方法是一样的!

3.

双目运算实例

这是2000年4月二级C考试中的一道选择题:

下列程序的输出结果是

A)

3

B)

3.2

C)

0

D)

3.07

main()

{

double

d=3.2

int

x,y

 x=1.2

y=(x+3.8)/5.0

 printf("%d

\n",

d*y)

} 

本题中,程序先执行语句

x=1.2,根据赋值运算的类型转换规则,先将double型的常量1.2转换为int型,即取整为1,然后将1赋值给变量x。接下来执行语句y=(x+3.8)/5.0;根据运算符的优先级,先计算小括号内,再计算除法,最后执行赋值运算。小括号内的运算过程:先将整型变量x的值1转换为double型1.0,然后与3.8进行加法运算,得到中间结果4.8。接着进行除法运算4.8/5.0,其结果小于1.0,这里没有必要计算出精确值,因为接着进行赋值运算,赋值号左边的变量y的类型为整型,于是对这个小于1.0的中间结果进行取整,结果为0,于是变量y的值为0。因此该题的输出结果应该是0。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6473891.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-23
下一篇 2023-03-23

发表评论

登录后才能评论

评论列表(0条)

保存