1.运算符
1.1算数运算符
C语言提供的算数运算符:+、-、*、/、%、++、--如:(float、double不能取余)
#include<stdio.h>
int main()
{
int a=15,b=8,c;
c = a+b;
printf("c=%d \n",c);
c = a-b;
printf("c=%d \n",c);
c = a*b;
printf("c=%d \n",c);
c= a/b;
printf("c=%d \n",c);
c = a%b;
printf("c=%d \n",c);
return 0;
}
1.2关系运算符
C语言的关系运算符:大于(>)、大于等于(>=)、小于(<)、小于等于(<=)、等于(==)、不等于(!=)。
例如:
#include<stdio.h>
int main()
{
int a=8,b=9;
if(!((a-1)>=b))
printf("ture \n");
else
printf("faLse \n");
return 0;
}
int a=5,b=6;
a>(b-1) 结果为0
(a+1)==b 结果为1
a>=(b-2) 结果为1
a<100 结果为1
(a+3)<=b 结果为0
a!=(b-1) 结果为0
1.3逻辑运算符
运算符 | 功能说明 | 举例 |
! | 逻辑反 | !(x==0) |
&& | 逻辑与 | x>0&&x<10 |
|| | 逻辑或 | y<10||x>5 |
逻辑运算符“!”的运算如下
运算量 | 结果 |
1 | 0 |
0 | 1 |
例如
int k=8;
!(k==0) 结果为1
!((k-8)==0) 结果为0
!(k<=0) 结果为1
运算符“&&”运算符的运算规律如下:短路特性-逢0截止
左运算量 | 右运算量 | 结果 |
1 | 1 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 0 |
例如:
int x=5,y=18;
(x>=5)&&(y<20) 结果为1
((x+1)>=0)&&(y<17) 结果为0
((x-8)>=0)&&(y<17) 结果为0
逻辑或“||”运算符的运算规律如下:短路-逢1截止
左运算量 | 右运算量 | 结果 |
1 | 1 | 1 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
例如:
#include<stdio.h>
int main()
{
int a=8,b=9;
if(((a-1)>=b)|| b++)
printf("ture \n");
else
printf("faulse \n");
printf("%d %d \n",a,b);
return 0;
}
运算符 | 功能说明 | 举例 |
~ | 位逻辑反 | -a |
& | 位逻辑与 | a&b |
| | 位逻辑或 | a|b |
^ | 位逻辑异或 | a^b |
>> | 右移动 | a<<1 |
<< | 左移动 | b>>1 |
1.4.1 位运算取反
#include<stdio.h>
int main()
{
unsigned char x=0x17,y;
y=~x;
printf("%#x \n",y);
return 0;
}
运行结果:
1.4.2 位逻辑与运算
#include<stdio.h>
int main()
{
unsigned char x = 0126,y =0xac,z;
z =x&y;
printf("%#x \n",z);
return 0;
}
运行结果为
1.4.3位逻辑运算或
#include<stdio.h>
int main()
{
unsigned char x=076,y=0x19,z;
z=x|y;
printf ("%#x \n",z);
return 0;
}
运行结果:
1.4.4 位逻辑运算异或^
#include<stdio.h>
int main()
{
unsigned char x=75,y=0173,z;
z=x^y;
printf ("%#x \n",z);
return 0;
}
运行结果:
1.4.5 位逻辑左移动
#include<stdio.h>
int main()
{
unsigned char x=0x04,z;
z=x<<3;
printf ("%#x \n",z);
z=x<<2;
printf ("%#x \n",z);
z=x<<1;
printf ("%#x \n",z);
return;
}
运算结果:
1.5 赋值运算符
赋值运算符“=”,其运算的一般形式如下:
<左值表达式>=<右值表达式>
赋值复合运算符其运算的一般形式如下:
<变量><操作符>=<表达式>
C语言的赋值运算符其运算的一般形式如下:
运算符 | 功能说明 |
+= | 加赋值复合运算符 |
-= | 减赋值复合运算符 |
*= | 乘法赋值复合运算符 |
/= | 除法赋值复合运算符 |
%= | 求余赋值复合运算符 |
&= | 位与赋值复合运算符 |
|= | 位或赋值复合运算符 |
^= | 位异赋值复合运算符 |
>>= | 位右赋值复合运算符 |
<<= | 位左赋值复合运算符 |
#include<stdio.h>
int main()
{
int count ,sum;
count =0,sum=0;
while(count++ <100)
{
sum+=count;//sum=sum+count
}
printf("sum=%d \n",sum);
return 0;
}
运行结果:
1.6特殊运算量
1.6.1 条件运算符
"?:"是三目运算符,其运算的一般形式是:
<表达式1>?<表达式2>:<表达式3 >
#include<stdio.h>
int main()
{
int x=70,y=25;
y=++x>70?100:0;
printf("x=%d y=%d \n",x,y);
return 0;
}
运行结果:
1.6.2 逗号运算符
逗号运算符最终的值是由表达式最后一个决定的
#include<stdio.h>
int main()
{
float x=10.5,y=0.8,z=0;
z=(x+=5,y=x+0.8,z=x+y);
printf("x=%f y=%f z=%f \n",x,y,z);
return 0;
}
运算结果:
1.6.3sizaof运算符
运算符的一般形式:sizeof(类型或变量名)
只针对数据类型,而不针对变量
可以查看当前环境下数据类型所占字节数大小
#include<stdio.h>
int main()
{
int a=1;
long b=2;
long long c=3;
printf("%d %d %d \n",sizeof(a),sizeof(b),sizeof(c));
return 0;
}
运行结果
1.6.4C运算符的优先级
例如:
int x=1,y=0,z=0;
x++ && y++ || ++z;//结果为1
!(x+1>0) && y++ || ++z;//结果为1
x+=y==z,y=x+2,z= x+y+z>0;//x为2,y为4