运算符

1、算术运算符

  1.1、+(加)、-(减)、*(乘)、/(除)、%(余)

  这里的%只能是整数运算,不然会报错,如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
  
int main()
{
   int a = 2 ,b=5,c,d;
   float aa = 2.0,bb=5.0,cc,dd;
    
   c = b/a;
   d = b%a;
    
   cc = bb/aa;
   dd = bb%aa;
   printf("%d",c);
   printf("%d",d);
   printf("%f",cc);
   printf("%f",dd);
    
   return 0;
}

  

 而除法对于整数和浮点数运算是有区别的

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
  
int main()
{
   int a = 2 ,b=5,c;
   float aa = 2.0,bb=5.0,cc,dd;
    
   c = b/a;
   dd = b/a;
   cc = bb/aa;
    
   printf("%d\n",c);
   printf("%f\n",dd);
   printf("%f\n",cc);
    
   return 0;
}

 

 

 

很明显,在整数时会只计算结果的整数部分,当结果时2.5时,由于整数下的除法只会计算整数部分,则结果只会是2,即使dd是浮点类型,结果也是2.0,而当两个浮点数相除结果便是2.5。

1.2、++(自增)、--(自减)

这种运算符会对整型变量进行加1或者减1运算,当a++形式是先进行+1然后再进行赋值,而++a形式是先赋值,再加1,看下面一个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
  
int main()
{
   int a = 2 ,b,c;
   printf("%d\n",a);
   b = a++;
   printf("%d\n",b);
   printf("%d\n",a);
   c = ++a;
   printf("%d\n",c);
 
    
   return 0;
}

  结果如下

 

 

 很明显值为2的a在进行b = a++ 运算后,b的值为2,而a的值已经变成了3,而进行c =++a 运算后c的值为4;

 

2、关系运算符

==,!=,>,<,>=,<=

关系运算符是对运算结果的判断,比如当a等于b时那么a==b的结果就是true,若不等于结果就是false,是双目运算符。

 

3、逻辑运算符

&&(且)、 ||(或) !(非)

&&:当两个值均为true,结果为true

||:当两个值均为false时,结果为false

!:当值为true时,结果为false

&&和||的运算当第一个表达式可以判断整个式子时,后面的式子便不会继续计算,这里是需要注意的地方。

 

4、位运算符

1表示true,0表示false,&、 | 和 ^ 对应的运算结果如下

p q p&q p|q ^p
1 1 1 1 0
1 0 0 1 0
0 1 0 1 1
0 0 0 0 1

 

 

5、赋值运算符

一般的赋值运算符主要指 ‘==’,而组合和赋值运算符如 ‘+=’   表达的意思是 a+=b  等价于 a = a + b

 

6、杂项运算符

sizeof() 返回变量的大小。 sizeof(a) 将返回 4,其中 a 是整数。
& 返回变量的地址。 &a; 将给出变量的实际地址。
* 指向一个变量。 *a; 将指向一个变量。
? : 条件表达式 如果条件为真 ? 则值为 X : 否则值为 Y

7、优先级

类别 运算符 结合性 
后缀  () [] -> . ++ - -   从左到右 
一元  + - ! ~ ++ - - (type)* & sizeof  从右到左 
乘除  * / %  从左到右 
加减  + -  从左到右 
移位  << >>  从左到右 
关系  < <= > >=  从左到右 
相等  == !=  从左到右 
位与 AND  从左到右 
位异或 XOR  从左到右 
位或 OR  从左到右 
逻辑与 AND  &&  从左到右 
逻辑或 OR  ||  从左到右 
条件  ?:  从右到左 
赋值  = += -= *= /= %=>>= <<= &= ^= |=  从右到左 
逗号  从左到右 
posted @   Carllll  阅读(172)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示