表达式和数学公式一样,是由运算符和操作数组成的。以下就是简单的表达式:
d=a*b-123.4;
2.4.1赋值运算符
“=”就是赋值运算符,由至少两个操作数组成。
C语言除了一次指定一个数值给一个变量外,还能够同时指定同一个数值给多个变量,例如
int a,b,c;
a=b=c=100;
2.4.2算数运算符
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a=12,b=3;
printf("a+b=%d\n",a+b);
printf("a*b=%d\n",a*b);
printf("a/b=%d\n",a/b);
printf("a%%b=%d\n",a%b);/*重复%字符才会打印出*/
return 0;
}
2.4.3 关系运算符
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a=9,b=8;
printf("%d\n",a>b);
return 0;
}
>>>1 /*c语言中真为1*/
2.4.4逻辑运算符
(1).&&:两边都为真才为真
(2).||:只要一边为真就为真
(3).! :not将表达式的值反向输出
2.4.5自增与自减
int a=5,b;
b=++a;
c=a++;
printf("%d,%d",a,b); /*++a就是先进行a=a+1的操作再b=a,所以输出6,6*/
printf("%d,%的,a,c);/*先c=a,再a++*/
2.4.6位运算符
(1).&都为1时为1
二进制 十进制
0 0 0 1 1 0 1 = 13
0 1 1 1 0 0 1 = 57
0 0 0 1 0 0 1 13&57=9
(2).| 当其中一个为1时新位置为1
(3) ^ 当一个为1一个为0时为1
(4).~对数值的位值取1补码,即位值为1时,新位值为0,或为0时新位值为1
(5).>>2位移
0 0 0 1 1 0 1 =13
0 0 0 0 0 1 1 0 1 =3 右移两位,超出的去掉左边多出的补0
(6).<<n左移
13 = 0 0 0 1 1 0 1
52= 0 0 0 1 1 0 1 0 0 左移n位。左边超出的去掉,右边少的补0
2.4.7运算符优先级
() ! - (负号) ++ -- * / %
+ - (减法) << >> >= < <= ==
!= & ^ | && || ?: =
2.5 数据类型转换
2.5.1 自动类型转换
以下是自动转换类型的顺序
double > float > unsigned long > long > unsiged int > int
2.5.2 强制类型转换
int a,b,agv;
agv=(float)(a+b)/2; /*将a+b的值转换成浮点数
(float)agv=(a+b)/2; /*不合法的指令*/
/*强制类型如下*/
#include<stdio.h>
#include<stdlib.h>
int main{
int score1=80,score2=90,score3=70;
int sum=0;
sun=score1+score2+score3;
printf("%d\n",sum/3);
printf("%f\n",(float)sum/3);
return 0;
}
>>>80
>>>80.000000