欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【C语言】运算符

程序员文章站 2024-03-08 08:57:10
...

算数运算符

‘+’ ‘-’ ‘*’ ‘/’ ‘%’
/
如果使用两个整数进行除法运算,结果为整数。如果使用浮点数运算,结果为小数。
5/3=1
5.0/3.0=1.666667(保留六位小数)
%
取余只能使用整数进行运算不能使用浮点数
5%3=2
5.0%3.0出错

单目运算符与双目运算符

我们将进行运算的数称为操作对象。
1 + 2 左右两边都有操作数的运算符叫做双目运算符。
正负号只有一个操作数叫做单目运算符。

表达式

用运算符和括号将操作数连接起来的式子,我们称之为表达式。

运算符的优先级和结合性

注1:优先级相同的运算符,运算次序由结合性决定。
比如 3 * 4 / 5 % 6,其中乘号、除号和求余运算符在同一优先级,结合性是“左到右”,因此先计算 3 * 4,再计算 / 5,最后计算 % 6
再如 -i++,符号和自增运算符在同一优先级,结合性是“右到左”,因此 -i++ 相当于 -(i++)

注2:* 目运算符是指操作数的个数,比如单目运算符只有一个操作数,双目运算符有两个操作数,而三目运算符则有三个操作数。

注3:通过使用小括号可以提升表达式的优先级至最高。
比如 (1 + 2) * (3 - 4),其中加号、减号运算符的优先级本身是要低于乘号运算符的,但由于使用了小括号,且结合性均是“左到右”,所以先计算 (1 + 2),再计算 (3 - 4),最后才将前两者的结果相乘。
【C语言】运算符
【C语言】运算符
【C语言】运算符

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int main(){
   int i,j,k;
   i=1+2;
   j=1+2*3;
   k=i+j+-1+pow(2,3); //3+7+(-1)+8=17
 
   printf("i=%d\n",i);
   printf("j=%d\n",j);
   printf("k=%d\n",k);
   system("pause");
   return 0;

}

【C语言】运算符

类型转换

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int main(){

   printf("整型输出:%d\n",1+2.0);
   printf("浮点型输出:%f\n",1+2.0);

   system("pause");
   return 0;

}

【C语言】运算符
由上面的例子可以看出,数据类型不同进行计算会出现错误,要是想要输出结果为自己想要的数据类型就要进行数据类型转换。

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int main(){

   printf("整型输出:%d\n",1+(int)2.0);
   printf("浮点型输出:%f\n",1+2.0);

   system("pause");
   return 0;

}

【C语言】运算符
注意,高精度向低精度的转换会损失精度。
浮点型1.8强制转换为整型就会丢失精度0.8变成1。

关系运算符

使用关系运算符来比较两个数的大小关系
优先级高:
< 小于
<= 小于等于
> 大于
>= 大于等于
优先级低:
== 等于
!= 不等于

关系表达式

用关系表达式将两边的变量、数据或表达式连接起来,称之为关系表达式。
关系表达式只会返回两个逻辑值 0或1 (假或真)

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int main(){
   int a=5,b=3;

   printf("%d\n",1<2);  //真
   printf("%d\n",a>b);  //真
   printf("%d\n",a<=b+1); //假
   printf("%d\n",'a'+'b'<='c'); //假
   printf("%d\n",(a=3)>(b=5)); //假

   system("pause");
   return 0;

}

【C语言】运算符

逻辑运算符

! 非 取反
&& 与 同真为真 其中一个为假结果为假
|| 或 其中一个为真结果为真,同假为假

逻辑表达式

用逻辑运算符将两边的变量、数据或表达式连接起来,称为逻辑表达式:
3>1&&1<2 为真
3+1||2==0 为真 任何非0的数都为真

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int main(){
int a=5,b=3;

    printf("%d\n",3>1&&1<2);
    printf("%d\n",3+1||2==0);
    printf("%d\n",!(a+b));
    printf("%d\n",!0+1<1||!(3+4));
    printf("%d\n",'a'-'b'&&'c');

   system("pause");
   return 0;

}

【C语言】运算符

短路求值

  • 短路求值又称最小化求值,是一种逻辑运算符的求值策略。只有当第一个运算数的值无法确定逻辑运算的结果时,才对第二个运算数进行求值。
  • C语言对于逻辑与和逻辑或采用短路求值的方式。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int main(){

     int a=3,b=3;
     (a=0)&&(b=5); //逻辑与,左边a赋值给0为假不成立右边就不会再进行运算
     printf("a=%d,b=%d\n",a,b);
     (a=1)||(b=5); //逻辑或,左边a赋值给1大于0为真,整个式子已经为真,右边就不再进行运算
     printf("a=%d,b=%d\n",a,b);

   system("pause");
   return 0;

}

【C语言】运算符

相关标签: 【C语言】