第三章
3.1运算符的概念
运算符:
加:+ 减:- 乘:* 除:/ 求余:%
表达式:由操作数和运算符组成的式子 如==》 a-b,1+2
注:C语言中单一的一个变量或者单一的一个常量是最简单的表达式
优先级: (该表摘自:)C语言运算符优先级 (biancheng.net)http://c.biancheng.net/view/285.html
单目,双目,三目运算符
单目运算符:运算对象只有一个,如:++ -- !
双目运算符:运算符两侧各有一个运算对象,如: + - * / %
三目运算符:运算对象有三个,如: ?:
即
表达式1?表达式2:表达式3 ==》表达式1为真则执行表达式2,否则执行表达式3
10>15?10:15 ==》结果为15
3.2算术运算符
算术运算符与表达式: + - * / %
+ - * / 只要有一个运算对象是浮点型,则表达式的值为double型。如:
#include <stdio.h>
int main(void){
float a = 0,c = 0,d = 0;
a = 7.5;
c = 5/2; //c = 2
d = 5.0/2 //d = 2.5,d = 5/2.0或d = 5.0/2.0也等于2.5
printf("%f\n",c);//%f输出小数
printf("%f\n",d);
retrun 0;
}
%求余运算符的两个运算对象必须都为整数,而且表达式结果的正负由除数决定,如
15%6 ==>3
15%-6 ==>3
-15%6 ==>-3
-15%-6 ==>-3
6%15 ==>6
a++与++a(a--与--a同理)
3.3关系,逻辑运算符
关系运算符与表达式:> < == >= <= !=
逻辑运算符与表达式:逻辑与 && 逻辑或 || 逻辑非 !
逻辑与 && :参与运算的对象都为真(不为0)结果才为真 ===》一假则假
逻辑或 || :参与运算的对象只要有一个为真(不为0)结果就为真 ===》都为假结果才为假
逻辑或 || :使表达式的值由真变假,由假变真
3.4赋值运算符
简单赋值运算符:= 变量 = 表达式; 如 a = 45; 把45赋值给a
复合的赋值运算符:+= -= *= /= %=
a += 10 ==> a = a + 10
a -= 10 ==> a = a - 10
a *= 10 ==> a = a * 10
a /= 10 ==> a = a /10
a %= 10 ==> a = a % 10
sizeof求字节运算符与表达式
sizeof(表达式)结果为表达式的数据类型占据的字节数
#include <stdio.h>
int main(void){
int a = 5;
printf("%d\n",sizeof(a+6));//结果为4,5+6=11,11为整型,占据4字节
return 0;
}
强制类型转换运算符:(类型名)(表达式)
#include <stdio.h>
int main(void){
int a ,b,d;
float c = 0;
c = (int)7.0/2;
printf("%f\n,c"); //结果:3.00000,不是3.50000,原因是把7.0转成了整型7
b = (int)7.5*2;
printf("%f\n,b"); //结果:14.00000,7.5被转成整型7,再乘以2
d = (int)(7.6*2);
printf("%f\n,d"); //结果:15.00000,7.6先乘以2得15.20000,再强制转成整型15.00000
retrun 0;
}
不同类型的数据混合运算
为了保证运算的精度,计算机会自动转向精度高的数据类型进行转换,如char一定会转换成int,float一定会转换成double
#include <stdio.h>
int main(void){
char a = 5;
printf("%d\n",sizeof(a+6)); //结果:4 5+6=11,5是char类型占据1字节,会别强制转换成4字节,再跟整型数据6运算
return 0;
}