C语言基础 运算符

来源:互联网 发布:苏宁 算法研究员 面试 编辑:程序博客网 时间:2024/05/01 19:17

自增自减运算符

  

赋值运算符<逻辑与运算符<关系运算符<算术运算符

无论++在前还是在后都会自增1

++a; a本身会自增1,它的返回值(结果)是原来的 a + 1 的值

a++; a本身会自增1,它的返回值(结果)是原来的 a 的值

 

int a = 2;

int b = a++ + a++ ;  //b = 2 + 2    a = 4

b = ++a + ++a ;       //5 + 6   a = 6

b = ++a + ++a; //  7 +8   a= 8

 printf("a = %d , b =%d\n", a , b);

无论- -在前还是- -在后a本身都会自减 1

---------------------------------------------------------

逻辑运算符

 

所有逻辑运算符他们的结果只有两个,要么真(1) 要么假(0)

&& 逻辑与
&& 只要有一个表达式为假,那么整个表达式的结果就为假
&& 如果左边的表达式为假,那么右边的表达式就不参与运算(与断路)
口诀:一假则假
结合方向:从左往右


||逻辑或
1.只要有一个表达式为真,那么整个表达式结果为真
2.如果前的表达式为真,那么后面的表达式就不参与运算(或断路)
口诀:一真则真

结合方向:从左往右

 

&& 和 || 的优先级要小于 关系运算符的优先级  大于 赋值运算符的优先级

! 逻辑非

1.真变假,假变真

2.结合方向:从右往左

3.它优先级要高于比较运算符和算术运算符的优先级

! 逻辑非

在C语言中所有数值都是有真假性,所有非零的数都为真,只有0为假

三目运算符:
条件表达式:由关系运算符或逻辑运算符构成表达式

条件表达式 ? 结果1 : 结果2;

如果条件表达式成立就返回结果1 否则 就返回结果2

--------------------------------------------------

关系运算符

 

所有的关系运算符都是用来比较两个数据的,它们的结果只有两个,要么是真(1),要么是假(0)

<
>=
<=
上面四个比较运算符的优先级要大于后面的两个
!=    不等于
==  等于


赋值运算符的优先级 < 比较运算符的优先级 <  算术运算符的优先级
比较运算符的结合性从左往右的

int result = 5 > 6 < 4< 2;
printf("%d\n",result);
当我们不确定某些运算符优先级的时候,可以使用()来明确优先级

result = ( 5== 5 ) < 4 
int a = 10 ;  //比较时会转换为 double
double b = 20.0;

result = a < b ;

printf("%d\n",result);


--------------------------------------------------------------

赋值运算符 

 

=  赋值运算符
复合赋值运算符

+=

-=

*=

/=

%=

 

赋值运算符:把等号右边的数值放到左边的变量中,同时它做一个表达式本身有值,它值就是右边的数据
int a;
a = 10;
printf("%d",a = 10);
int  b , c;
b = c = 2 ;
a +=  10; // a  = a+ 10 ;
a -=  8; // a = a - 8 ;

a *=  6; // a  = a *6 ;

a /=  4; // a  = a /4 ;

a %=  2; // a  = a %2 ;

 

所有赋值运算符的优先级都是小于算数运算符的

赋值运算符是所有运算符中除了逗号运算符以外优先级最低的

int a = 4;

a *= 2 + 3 ;

peintf("a = %d\n",a); //先2+ 3 再乘a 20

--------------------------------------------------------------

算数运算符

 

算术运算:

+ 正号
-  负号

+   加

-   减
*    乘  

/    除  

%   取模 或 取余

1.取模运算符的正负性取决于那个操作数的正负

2.取模运算符的操作数只能是整数

单目运算符:操作数只有一个
双目运算符:操作数有两个
三目运算符:操作数有三个
int main()
{
  -1;//单目
 1 + 2; //双目
 a > b ? 1 : 0  //三目
}


优先级 : 优先级高操作符他们两边操作数优先与这个操作符进行结合成为一个整体.

结合方向:当优先级相同的时候,从那边开始计算

算数运算符的结合方向是从左到右

 

自动类型转换 —>类型提升,当表示范围小的类型与表示范围大的类型进行运算,小类型会自动转换大类型
当两个相同数据类型的数据进行运算的时候,那么他们运算出来的结果还是什么类型
//double d = 10 / 4;
//doubled = 10 / 4.0;
强制类型转换:在某个数的前面(数据类型)数据

//double d = (double) 10 / 4 ;

当把一个大类型数复制一个小类型数,大类型会自动转换小类型

注意点:导致精度丢失

int a = 10.5 ;

printf ("%d”,a);

/*

int a = 10; 

int b = 4;

double  d = (double) a /b;  一定要注明类型

*/

int d = (int) 14.6;
printf("d= %ld\n",d);

--------------------------------------------------

sizeof运算符

 

用来计算常量,变量,以及数据类型(指的是这种数据类型的变量或常量)所占用存储空间的字节数

int size = sizeof(1);

printf("%d\n",size);// 4

sizeof 是运算符不是函数,当他用在常量上面可以省略小括号

sizeof 常量 或 sizeof(常量)  

当sizeof 作用再变量上sizeof(变量名称) sizeof 变量名称

sizeof作用在数据类型 , 表示这个中数据类型的常量或变量所占用存储空间

//类型本身是不占用存储空间,只有这种类型那个的数据才占用存储空间

//当size作用在数据类型上,小括号是不可以省略的

int size = sizeof(int);
printf("%d\n",size); // 显示int所占空间 

在C语言中所有表达式都有返回值(结果)
结合方向:从左往右
返回值:最后一个表达式的值
//printf(“%d",(1,2,3))
 inta = 10;

int b = 2;

int result = (a += 2, b + 4 ,4+ a);

printf("result =%d",result);

//注意

//这个不是逗号表达式,这个是定义多个变量的简易方式
int a , b , d;

 

 

 

 

 

 


0 0
原创粉丝点击