首页 > 其他分享 >运算符、分支语句

运算符、分支语句

时间:2024-09-27 23:12:12浏览次数:10  
标签:语句 tmp 数字 运算符 num 按位 printf 分支 数位

位操作符:

可以直接操作二进制数位的内容;~是一个单目位操作符,它可以根据一个数字计算另外一个数字,这两个数字所有二进制数位的内容都不同(按位取反),使用的时候这个符号应该写在数字前面

双目位操作符:包括按位与(&),按位或(|)以及按位异或(^),他们都可以把两个数字对应二进制数位的内容做计算。

按位与(&)

可以把两个数字对应数位的内容做计算;只要一个数位的内容是0则与计算以后的结果就是0

	3			0000	0011
&	5			0000	0101
				0000	0001

任何数位内容和0做按位与结果一定是0,任何数位内容和1做按位与结果保持不变,按位与可以用来获得某些数位的内容,按位与还可以把某些数位的内容设置成0.

按位或(|)

可以把两个数字对应数位的内容做或计算;只要一个数为的内容是1则或计算以后结果就是1

		3		0000	0011
    |   5		0000	0101
            	0000	0111

任何数位内容和0做按位或结果保持不变;任何数位内容和1做按位或结果就是1,按位或可以把某些数位的内容设置成1

按位异或(^)

可以把两个数字的对应数位内容做异或计算,如果两个数位内容一样则异或结果是0,否则结果是1

		3		0000	0011
     ^  5		0000	0101
            	0000	0110

任何数位内容和0做按位异或保持不变;任何数位内容和1做按位异或一定改变,按位异或可以把某些数位的内容变成相反内容

'a'		97		0110	0001
'A'     65		0100	0001
ch &=32;
ch |=32;
ch ^=32;

移位操作符

可以把一个数字里所有二进制数位的内容统一向左或向右移动n个位置

'>>'表示向右移位

'<<'表示向左移位;

他们都是双目位操作符,操作符左边是将要进行移位操作的数字,操作符右边是将要移动的数位,移位操作本质上就是把每个数位的内容放到另外一个数位里,向左移位的时候右边空出来的数位里必须填充0,无符号类型数字右移的时候左边空出来的数位里填充0;有符号类型数字右移的时候左边空出来的数位里填充符号位的内容(1或0)。一般情况下向左移动n个位置相当于乘以2的n次方,向右移动n个位置相当于除以2的n次方。所有位操作符都不会修改存储区内容。

&也可以作为单目操作符使用,这个时候它可以用来计算一个存储区的地址;使用的时候应该把这个操作符写在一个存储区的前面,可以使用%p占位符把地址数据显示在终端窗口里。我们的计算机里所有地址数据都是由32个二进制数位构成的。

*也可以作为单目操作符使用,这个时候它可以根据一个地址找到对应的存储区,这个操作符应该写在一个地址数据前面。

三目操作符

可以从两套计算规则里选择一套进行计算,三目操作符格式如下:

布尔值 ? 公式1:公式2;如果布尔值为真就采用公式1计算,否则就采用公式2计算。不要再?后使用赋值操作符

练习:男人身高减体重小于105算超重,女人身高减体重小于110算超重;gender(0代表女人,1代表男人),height 身高,weight 体重。使用三目表达式。

gender ? height-weight<105:height-weight<110

练习:编写程序从键盘得到一个0到127之间的整数,把这个整数转换成二进制的结果显示在屏幕上

隐式类型转换

如果表达式里包含多个不同类型的数字就必须首先把他们转换成同一个类型然后在计算,这个转换过程叫隐式类型转换,隐式类型转换完全由计算机完成,隐式类型转换的时候必须把占地小的类型转换成占地大的类型,如果不同类型数字大小不一样就把整数类型转换成单精度浮点类型,把有符号类型转换成无符号类型。

强制类型转换

C语言程序里可以临时给数字指定类型,这叫做强制类型转换,强制类型转换格式如下

(char)300

强制类型转换有可能导致数据内容丢失,类型转换不会修改存储区内容

分支语句

分支语句可以从几组语句中选择一组执行而忽略其他组,如果在编写程序的时候遇到多种可能性,每种可能性需要专门的语句处理就需要使用分支;if关键字可以用来编写分支语句,if分支里需要为每种可能性编写专门的语句进行处理,if分支里需要为每组语句编写配对的逻辑表达式,当某个逻辑表达式结果为真的时候就执行它配对的那一组语句。

if(){
    
}
else if(){
   
}
else if(){
    
}
else if(){
    
}

if分支里的任何两组语句都不可能同时执行(可能同时执行的语句不可以被包含在一个if分支里),编写if分支的时候最好先把所有可能性的个数确定下来,如果分支里必然有一组语句会执行就可以省略最后一组语句的逻辑表达式和if关键字如果if分支里多个逻辑表达式同时为真就执行第一个为真的逻辑表达式所对应的语句而忽略后面的语句,可以利用这一点简化if分支里的逻辑表达式。if分支里的某一组语句不仅仅和他配对的逻辑表达式有关,只有当前面的所有的逻辑表达式都为假而配对逻辑表达式为真的时候才会执行这组语句。编写if分支的时候尽量把逻辑表达式简单的写在前面。

练习:编写程序从键盘得到三个数字,找到其中最小的数字并把它显示到屏幕上

switch……case格式也可以用来编写分支,如果一个分支里每个可能性都可以用一个唯一的整数表示,这种分支才可以用switch……case格式实现,

switch () {
    case 0:
        break;
    case 1:
        break;
    case 2:
        break;
    case 4:
        break;
    default:
}

练习答案:

点击查看代码
#if 0
/*
 *
 * 操作符演示
 *
 * */
#include<stdio.h>
int main(){
	char ch=~0x92;
	int num=ch;
	printf("num=0x%x\n",num);
	printf("3&5=%d\n",3&5);
	printf("3|5=%d\n",3|5);
	printf("3^5=%d\n",3^5);
	printf("3<<2=%d\n",3<<2);
	num=0x80000000;
	printf("0x80000000>>2=0x%x\n",0x80000000 >> 2);
	printf("num=0x%x\n",num >> 2);
	return 0;
}


#elif 0
/*
 *
 * 地址相关操作符演示
 *
 *
 * */
#include<stdio.h>
int main(){
	int num=0;
	printf("&num=%p\n",&num);
	*(&num)=10;
	printf("num=%d\n",num);
	return 0;
}


#elif 0
/*
 *
 * 三目表达式演示、
 *
 */
#include<stdio.h>
int main(){
	int num=0;
	printf("请输入一个数字:\n");
	scanf("%d",&num);
	num=num >= 0 ? num : 0-num;
	printf("绝对值是%d\n",num);
	return 0;
}


#elif 0
/*
 * 显示从0到127之间的 整数,显示二进制
 *
 * */
#include<stdio.h>
int main(){
	int num=0;
	unsigned char tmp=0x80;
	printf("请输入数字0-127:\n");
	scanf("%d",&num);
	printf("%d", (num & tmp) != 0);
	tmp >>= 1;
	printf("%d", (num & tmp) != 0);
	tmp >>= 1;
	printf("%d", (num & tmp) != 0);
	tmp >>= 1;
	printf("%d", (num & tmp) != 0);
	tmp >>= 1;
	printf(" %d", (num & tmp) != 0);
	tmp >>= 1;
	printf("%d", (num & tmp) != 0);
	tmp >>= 1;
	printf("%d", (num & tmp) != 0);
	tmp >>= 1;
	printf("%d", (num & tmp) != 0);
	printf("\n");
	return 0;
}


#elif 0
/*
 *
 * 类型转换演示
 *
 * */
#include<stdio.h>
int main(){
	printf("num=%d\n",sizeof(1 ? 1: 0.9));
	printf("num1=%d\n",-7+3<0);
	printf("num2=%d\n",-7+3u<0);
	printf("%d  %d\n",300,(char)300);
	return 0;
}

#elif 0
/*
 *
 *if 分支语句演示
 *
 * */
#include<stdio.h>
int main(){
	int num = 0;
	printf("请输入一个数字:\n");
	scanf("%d",&num);
	if(num > 0){
		printf("非负数\n");
	}
	else if(num<0){
		printf("负数\n");
	}
	else if(!num){
		printf("是0\n");
	}
	return 0;
}

#elif 0
/*
 *
 * if分支演示
 *
 * */
#include<stdio.h>
int main(){
	int num = 0;
	printf("请输入一个数字:\n");
	scanf("%d",&num);
	if (num < 0) {
		printf("负数\n");
	}
	else if (num >= 0 && (num & 1)) {
		printf("奇数\n");
	}
	else if (num >= 0 && !(num & 1)) {
		printf("偶数\n");
	}

	return 0;
}


#elif 1
/*
 *
 * 寻找最小数字
 *
 * */
#include<stdio.h>
int main(){
	int num1=0,num2=0,num3=0;
	printf("请输入三个数字:\n");
	scanf("%d%d%d",&num1,&num2,&num3);

	/*if (num2 > num1 && num3 > num1 ) {
		printf("最小数字是:%d\n",num1);
	}
	else if (num1 > num2 && num3 >num2) {
		printf("最小数字是:%d\n",num2);
	}
	else if (num1 > num3 && num2 > num3) {
		printf("最小数字是:%d\n",num3);
	}*/

	if (num1 > num2) {
		if (num2 > num3) {
			printf("最小数字是是%d\n",num3);
		}
		else {
			printf("最小数字是%d\n",num2);
		}
	}
	else{
		if (num1>num3) {
			printf("最小数字是%d\n",num3);
		}
		else {
			printf("最小数字是%d\n",num1);
		}
	}
	return 0;
}
#endif

标签:语句,tmp,数字,运算符,num,按位,printf,分支,数位
From: https://www.cnblogs.com/GQH1000/p/18436772

相关文章

  • Python基础04_Python字符串(下)&Python输入和输出&条件语句&循环语句&pass语句
    目录Python字符串(下)6、字符串的常用函数APIPython输入和输出1、输出 2、输入条件语句1.if2、if-else3、if-elif-else循环语句1、range函数2、for-in循环3、while循环4、循环控制break:用于 跳出 当前循环: continue:用于跳过当前迭代,继续下一次迭代:5、p......
  • MyBatis 动态语句
    一、if和where语句<!--List<Employee>selectEmployeeByCondition(Employeeemployee);--><selectid="selectEmployeeByCondition"resultType="employee">selectemp_id,emp_name,emp_salaryfromt_emp<!--where标签会......
  • C++ 容器赋值运算符
    ▲《C++Primer》P302assignlist<string>names;vector<constchar*>old_c_str{"娃哈哈","孟菲斯","HelloWold!"};names.assign(old_c_str.cbegin(),old_c_str.cend());//这个可以,拷贝构造for(constautos:names){cout......
  • 【C语言】分支和循环
    个人主页:zxctscl如有转载请先通知文章目录前言1.if语句1.1if1.2else1.3分支中包含多条语句1.4嵌套if1.5悬空else问题2.关系操作符3.逻辑操作符:&&||!3.1逻辑取反运算符(!)3.2与运算符(&&)3.3或运算符(||)3.4举例3.5短路4.switch语句4.1if语句和switch语......
  • Gitlab分支管理规范和提交代码规范
    gitlab分支管理规范分支说明:测试代码库共有三个分支,main分支、dev分支、release分支--main分支:存放运行稳定的最新代码,一般不直接将未审核的代码合入到main分支--dev分支:存放个人开发的用例脚本,可用于用例故障修复,新的用例开发等--release分支:对应上线的产品版本,在发布......
  • 实验1 C语言开发环境使用和数据类型、运算符、表达式
    任务1:1#include<stdio.h>23intmain(){4printf("OO\n");5printf("<H><H>\n");6printf("IIII\n");7return0;8} 1#include<stdio.h>23intmain(......
  • PHP中如何使用三元条件运算符
    三元条件运算符简介PHP中的三元条件运算符是一个简化的if-else语句,它允许你在一行代码中完成条件判断和赋值。其基本语法如下:条件?表达式1:表达式2;条件:是一个表达式,其结果将被评估为TRUE或FALSE。表达式1:如果条件为真(TRUE),则计算并返回这个表达式的值。表达式2:如果条件......
  • 【YashanDB知识库】由于hist_head$中analyze time小于tab$中analyze time导致的sql语
    本文内容来自YashanDB官网,具体内容请见https://www.yashandb.com/newsinfo/7459465.html?templateId=1718516问题现象某局点yashandbcpu使用率100%,经线上分析是由于几个sql执行慢,其中一个sql为简单的单行等值绑定变量过滤+排序。经分析执行计划,相对以前有所变化,走了另外一个索引(......
  • 【YashanDB知识库】由于hist_head$中analyze time小于tab$中analyze time导致的sql语
    本文内容来自YashanDB官网,具体内容请见https://www.yashandb.com/newsinfo/7459465.html?templateId=1718516问题现象某局点yashandbcpu使用率100%,经线上分析是由于几个sql执行慢,其中一个sql为简单的单行等值绑定变量过滤+排序。经分析执行计划,相对以前有所变化,走了另外一个索......
  • SQL常用数据过滤 - EXISTS运算符
            SQL查询中的EXISTS运算符用于检查查询子句是否存在满足特定条件的记录,如果有一条或者多条记录存在,则返回True,否则返回False。语法结构SELECTcolumn_name(s)FROMtable_nameWHEREEXISTS(SELECTcolumn_nameFROMtable_nameWHEREcondition);EXISTS直接......