本节主要说关系运算式和逻辑运算式。
一、关系运算式
1、等于(==):判断左边的表达式是否等于右边的表达式
2、大于(>):判断左边的表达式是否大于右边的表达式
3、大于等于(>=):判断左边的表达式是否大于等于右边的表达式
4、小于(<):判断左边的表达式是否小于右边的表达式
5、小于等于(<=):判断左边的表达式是否小于等于右边的表达式
6、不等于(!=):判断左边的表达式是否不等于右边的表达式
//注意:c语言中,关系运算所得结果只有0和1,0代表false(假),1代表true(真)。 int num1 = 4; int num2 = 7; int result = 0;//默认为0 //等于(==): result = num1 == num2; printf("result = %d ",result);//输出0 //大于(>): result = num1 > num2; printf("result = %d ",result);//输出0 //大于等于(>=): result = num1 >= num2; printf("result = %d ",result);//输出0 //小于(<): result = num1 < num2; printf("result = %d ",result);//输出1 //小于等于(<=): result = num1 <= num2; printf("result = %d ",result);//输出1 /不等于(!=): result = num1 != num2; printf("result = %d ",result);//输出1
二、逻辑运算符
//逻辑运算式的结果也只有0和1,0代表false(假),1代表true(真) //注意:c语言中任何非0数字都为真。 int num1= 6; int num2= 7; int result = 0; //1、&&:逻辑与, result = num1>num2&&num1<num2; printf("result = %d ",result); //输出0,因为有一个是0,所以整个表达式的结果就是0。一假则假 //2、||:逻辑或, result = num1>num2 || num1<num2; printf("result = %d ",result); //输出1,因为有一个是1,所以整个表达式的结果就是1。一真就真 //3、!:逻辑非, result = !(num1>num2); printf("result = %d ",result); //输出1,因为是取反,真变假,假变真。 //断路的问题 result = ++num1 || num2++; printf("num1= %d num2 = %d result= %d",num1,num2,result); //输出 7,7,1,因为任何非0 的数字都是真,所以当程序执行到++num1的时候就为真,后面的num2++不会执行。 int num 1= -1;int num2 =20; result = num1++ || num2++; printf("num1= %d num2 = %d result= %d",num1,num2,result); //输出 0,20,1,后缀++会先用原先的值进行判断,-1为真,所以就是真,后面的值不会执行。如果是前缀++结果就是0,21,1 //逻辑与(&&)的运算可以自己去试试,但是得注意的是,如果&&前面的表达式为假,后面的就不会执行。只有当前面的为真,才会执行后面的表达式。 //总结:因为&&是一假则假,所以右边的表达式不会执行,||是一真则真,所有右边的表达式不会执行。 //逻辑运算符的优先级 //逻辑运算符<关系运算符<算术运算符
三、sizeof运算符
注意:sizeof并不是函数 只是运算符(计算出的结果是unsigned long 类型的数值)。
作用:计算出类型所占用的字节数。
//sizeof运算符 int result = sizeof(int);//发生了隐式转换 printf("result = %d",result);//输出4 printf("result = %lu",sizeof(int));//输出4 //自动的类型转换:只有基本数据类型才有,整型、实型、字符型。 //如果传入的是char类型的常量,计算结果也是4字节,传入char类型的变量或者char类型,那么计算结果是1。因为char类型的常量在内存中是当做int类型来存的。
至此运算符还有最后一个换位运算符没有介绍,后续有空会补上,有兴趣的也可以自己去学下。