运算符分为二元运算符关系运算符赋值运算和三者表达式。下面分别记录运算符的运算规则和示例
二元运算符分为乘法(*)、加法(+)、减法(-)、除法(/)、取余(%)
前面四种和我们数学上面的基本一致,运算从左往右计算,唯一要注意的是后面两种运算,这两种运算需要考虑精度问题,精度取决于数据类型。数据类型的精度见博客上一张数据基础
精简概括为 由大到小(精度高的转精度低的)缺失精度 由小到大(精度低的转精度高的)没有变化
数据类型的精度: double > float > int > char
#include <stdio.h>
int main()
{
int a =200;
float b = 12.9;
a = b; //由精度高的转精度低的 精度缺失 值a = 12;
printf("a = %d b = %f \n", a, b);
return;
}
//输出结果为 a = 12 , b =12.9;
int main()
{
int a = 200;
float b=12.9;
char ch = 'a';
a = b; //高精度转低精度 a = 12
b = ch; //低精度转高精度 没有变化 b=97 'a'的ACCIS码
printf("a = %d \t b = %f",a,b);
return;
}
关系运算符
关系运算符有: 大于号(>)、小于号(<)、大于等于号(>=)、小于等于号(<=)、等等于号(==)、不等于号(!=)
比较运算符之间的关系,如果结果正确 返回1,错误返回0 。返回的是整型
一元运算符
一元运算符有自加(++)、自减(--) 、赋值运算符(=)
int main()
{
int a =10;
int b = 0;
a--;// 先赋值再运算 a= a-1; 运算到此 a = 9
--a;// 先运算再赋值 运算到此 a = 8
a = a--; // a=a; a= a-1 把a--看成一个整体 运算到此 a = 7
a = --a; //a= a = a-1; 符号只能赋值一次 运算到此 a = 6
b = a-- + a--; //b = a+; a = a-1 b =19 运算到此 a = 4 b = 12 先赋值再做自身运算
return;
}
赋值运算符
赋值运算符(=)
int main()
{
int a =10;
int b;
b = a;
printf("a = %d, b = %d",a,b);
return ;
}
逻辑运算符
与 (&&) : 并且 判断条件之间的关系,如果有一个为假,那么条件为假
或( | | ) : 或者 判断条件只要有一个为真,就是真的 后面不再继续判断执行
非( ! ): 取反, 0为假 非0为真
与或非 优先级从左往右计算
//非示例
int main()
{
int a =1;
int b = -1;
int d = !b;
printf("a = %d ,b = %d c = %d ",a,b,d);// a = 1 b = -1, d= 0
return;
}
//与(&&)示例
int main()
{
int a =1;
int b = -1;
int c = --a && --b;
printf("a = %d ,b = %d c = %d ",a,b,c);// a = 0 b = -1, c= 0
return;
}
赋值运算符
赋值运算符包括乘等于(*=)、除等于(/=)、取模等于(%=)、加等于(+=)、减等于(-=) 、等于(=)
int main
{
int a,b;
a += b; // a =a+b
a -= b; // a= a-b
a *= b; // a =a*b
a /= b; // a= a/b
a % = b; // a =a%b
a = b; // a =b
return;
}
sizeof() //求字节大小