首页 > 代码库 > 位运算与流程控制语句5
位运算与流程控制语句5
文件命名方法: 驼峰命名 classNum
下划线命名 class_num
A 65 Z 90
a 97 z 122
baxuexi de zuo cheng biji
bu yao wangji mei tian fuxi qianyi tian xue xi de.
wen gu er zhi xin bu jiu geng you yi si le ma.
一、位运算
符号 描述 运算规则
& 按位与 屏蔽某些二进制位(置零)
| anwei或 两个都为零结果都为0
作用:把某些二进制位 置1
可以判断某个二进制位是1还是0
^ 按位异或 两位相同为0,不同为1
作用:可以用来将指定位反转
~ 取反 0变1,1变0
~0000 1111=1111 0000
<< 左移 作用:各二进制位依次左移若干位,
高位丢弃,低位补零(左移相当于
0000 1111 <<2=0011 1100
>> 右移 各二进制位全部右移若干位
对于无符号数高位补零,
对于有符号数对于有符号数,根据编译器的不同
,有的补符号位,称之为算数右移,
有的高位补零(逻辑右移)
逻辑右移b>>>3;
求奇偶:能被二整除(求摸)是偶数,否则为奇数
float x 与 0值进行比较
float f=0.000001;
if(x<=f && x>=f)
{
}
不借助第三个变量,两个变量实现交换
a=a^b;
b=b^a; //b=b^(a^b) b=b^b^a b=0^a b=a
a=a^b; // a=(a^b)^(b^a)=(a^b)^(b^(a^b))=b //符合交换率
等价于下边的式子
a1=a^b;
b1=b^a1;
a2=a1^b1;
:! 加叹号运行外面的命令:!gcc day01.c
二、流程控制语句
可以分为条件语句、开关语句、循环语句。
(1)条件语句
if(表达式){复合语句};
if(表达式)语句;
if(表达式)
语句1;
else if(表达式)
语句2;
else if(表达式)
语句3;
else
语句4;
1,else if 各以有0到n个
2.else 可以有0到1个
3.分支语句如果只有一条,可以省略{}
printf( "较大的数是:%d\n",a>=b?a:b);
// 不要忘记写%d\n buran不会有结果
scanf(”%d%d\n",a,b); // 中间的\n不可以加,加上就错了
(2)开关语句
1.?: //三目运算符
2.switch case
switch(表达式){
case 常量表达式:语句1;
case 常量表达式:语句2;break;
。。。。
case 常量表达式:语句n;break;
default:
语句;
}
注意:
1.表达式,要求他的计算结果必须是整数,不能是浮点数或字符串
2.对于常量表达式不能包含变量或者函数调用,
最终结果应该是一个整数
3.每一个分支里可以有多条语句,以break终止。不需要加{}
4.不可以有重复的分支
练习:输入月份,打印这个月有多少天?
5 break 关键字 跳出 或 终止
输入年 月 日 计算这一天是这一年的第几天
goto
break :跳出,或者循环(分支switch)
continue:继续。终止本次循环,进入下一次循环
打印一到三十之间不能被 四整除的数
while循环 do while:while循环
while(表达式条件){语句;}
while(1);等价于 for(;;) 死循环
do{语句块,多条语句}while(); 不要忘记最后的分号
练习:完善days.c代码,加上验证
2.输入五个整数,找出最大的
3.使用do while 判断一个整数有多少位
4.思考题:输入一个整数,打印二进制
2. 输入五个数
scanf
a>b a
a>c a
a<d d