首页 > 编程知识 正文

c语言中逗号的运算符优先级,c语言中比较运算符和算术运算符

时间:2023-05-04 09:50:07 阅读:244019 作者:4198

一.关系运算符

下面是C语言中的关系运算符:

关系表达式的值是“真”和“假”,在C程序用整数1和0表示。如:

其结果为:
注意:>=,<=,==,!=这种符号之间不能存在空格。

二.逻辑运算符

逻辑运算的结果

在编程中,我们一般将零值称为“假”,将非零值称为“真”。逻辑运算的结果也只有“真”和“假”,“真”对应的值为 1,“假”对应的值为 0。

1) 与运算(&&)

参与运算的两个表达式都为真时,结果才为真,否则为假。例如:
5&&0
5为真,0为假,相与的结果为假,也就是 0。
(5>0) && (4>2)
5>0 的结果是1,为真,4>2结果是1,也为真,所以相与的结果为真,也就是1。

2) 或运算(||)

参与运算的两个表达式只要有一个为真,结果就为真;两个表达式都为假时结果才为假。例如:
10 || 0
10为真,0为假,相或的结果为真,也就是 1。
(5>0) || (5>8)

5>0 的结果是1,为真,5>8 的结果是0,为假,所以相或的结果为真,也就是1。
3) 非运算(!)

参与运算的表达式为真时,结果为假;参与运算的表达式为假时,结果为真。

优先级
逻辑运算符和其它运算符优先级从低到高依次为:
赋值运算符(=) < &&和|| < 关系运算符 < 算术运算符 < 非(!)
&& 和 || 低于关系运算符,! 高于算术运算符。

三.三目运算符

(a>b)?a:b”是一个条件表达式,如果(a>b)条件为真,则条件表达式去值a,否则取值b。
一般形式:表达式1?表达式2:表达式3,它是C语言中唯一的一个三目运算符。

执行顺序:先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值作为整个条件表达式的值。若表达式1的值为0,则求解表达式3,表达式3的值作为整个条件表达式的值.

例如:max=(a>b)?a:b,执行结果就是将a和b中大者赋给max。(条件运算符的优先级高于赋值运算,低于关系运算和算术运算)

例子:输出a,b中较大者
int main (void)
{
int a,b;
scanf(“%d%d”,&a,&b);
printf(“%dn”,a>b?a:b);
return 0;
}

条件运算符的优先级比较低,只比赋值运算符和逗号运算符高。
总结
三目运算符也可以实现switch case语句的功能,而且更简洁。
结合顺序是从右往左。
C语言中唯一的一个三目运算符。
优先级只比赋值运算符和逗号运算符高。

四.位运算

C语言提供了六种位运算符:

(1) & 按位与
(2) | 按位或
(3) ^ 按位异或
(4) ~ 取反
(5) << 左移
运算法则:x << y——将x左移y位,将x最左边的y位丢弃,在右边补y个0。对于signed和unsigned是相同的

(6) >> 右移
运算法则:x >> y——将x右移y位,这需要区分x是有符号数还是无符号数,具体情况如下:

a、在x是无符号数时,只需将x的最右边的y位丢弃,在左边补上y个0;
b、在x是有符号正数时,同无符号数的处理相同;
c、在x是有符号负数时,将将x的最右边的y位丢弃,在左边补上y个1。
应用场合:用于二进制运算

五、位运算的使用

在本篇博客所举得例子中,完成相应功能的C语言代码都仅仅是一行位运算搞定。此处仅列出标题,以对该片博文的作者致敬。
(1)获得int型最大值
(2)获得int型最小值
(3)获得long型最大值
(4)乘以2运算
(5)除以2运算
(6)乘以2的m次方
(7)除以2的m次方
(8)判断一个数的奇偶性
(9)不用临时变量交换两个数
(10)取绝对值
(11)取两个数的最大值
(12)取两个数的最小值
(13)判断符号是否相同
(14)计算n的二次方
(15)判断一个数是不是2的幂
(16)对2的n次方取余
(17)求两个整数的平均值
(18)从低位到高位,取n的m位
(19)从低位到高位,将n的第m位置1
(20)从低位到高位,将n的第m位置0
(21)另:计算n+1,计算n-1,取相反数,
(22)sign函数,参数为n,当n>0时候返回1,n<0时返回-1,n=0时返回0。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。