您的位置:首页 > 其它

05,标准C

2013-09-05 22:25 169 查看
/*

 达内学习 标准C  day05 2013-9-5

预习
1,其他位运算符
2,三目操作符
3,类型转换
4,分支结构  (if ,switch..case)
5,循环(for)

 */

回顾:
1,数据类型
2,二进制和八进制转换
3,八进制和十六进制

作业:
1,十进制转二进制
2,时间

使用二进制表示负数时不可以使用-号

一个字节中存入9个数位,最高位截断,剩下低八位

1 0000 0000 = 0000 0000 =0

1 0000 0000 - 0011 1010

=1111 1111 + 1 - 0011 1010

=1111 1111 - 0011 1010 + 1

负数补码是取反加1

负数二进制的计算方法
1,求出相反数(对应非负数),的二进制
2,对这个二进制数做按位取反加一

使用上述方法计算出来的结果就是补码,可以直接存储在计算机里

0000 0000 的补码还是0000 0000 

1000 0000 规定是数据类型中的最小数 如-128

任何数据类型中有两个特殊的数字,分别是 全零 和 只有首位是1 (自己相加得0),后一个数用来表示这个数据类型中的最小数 如:-128

根据一个二进制补码计算相反数的二进制补码也可以取反加1,互为补码

所有的有符号数据的最高位叫做符号位 符号位为0表示是非负数,符号为1表示为负数

无符号数据是没有符号位的,符号位不能等同于正负号

整数之间的赋值要保持二进制不变

有符号数据扩充的时候在前面所有位都补充符号位,无符号数据前面扩充0   char ch=128   int a=ch     ->ch=-128 a=128

C语言中可以是使用(+-*/%)

,也可以当操作符 可以把两个无关的表达式连接在一起  合并后的结果是最后一个表达式的结果 

,操作符号的优先级非常低

printf("计算结果是%d\n",(1+2,3+4));  //输出为3+4=7

=赋值操作符可以用来改变变量的内容

赋值操作符的左边必须是左值(变量),右边必须能当数字使用

赋值操作符的优先级也很低,但是比,的优先级高 

一条语句中可以包含多个赋值操作符  先运算右边的   从右到左

赋值操作符的优先级也很低,但是比,的优先级高

双目运算符需要两个数字联合使用

很多双目操作符可以和复制操作符合并形成复合赋值操作符(+= -+ *= /=)

复合赋值操作符也是双目操作符

复合赋值操作符也要求左边是变量,右边是可以但数字使用的

 num += 6;等于num = num +6;

复合赋值操作符中但双目操作符优先级和赋值操符号一样低

自增(++)和自减(--)也是C语言中可以使用的操作符,用于对一个变量进行加一或者减一操作

他们都是单目操作符   他们只能对变量进行操作也是C语言中可以使用的操作符,用于对一个变量进行加一或者减一操作

他们都是单目操作符   他们只能对变量进行操作

分成前操作和后操作两种

前操作的优先级非常高  后操作的优先级最低

不要在一条语句中对一个变量进行多次自增或自减

num1 = num++ + ++num;    //先做++num =6 后做加法+ 然后赋值  最后num++

num=num2++ + ++num2;  //num2是全局变量,先算++num2,后算加法 此时前面的num2里面还是5,所有num=5+6,然后num2++ =5   【编译器特异性】

布尔值 包括真(true)或假(false)

bool类型用来描述布尔值,为了使用布尔需要把stdbool.h文件合并进来

bool类型并不是C语言官方提供认可的类型

布尔值在计算机内部仍然用整数表示,真用1表示,假用0表示 

C语言中所有整数都可以当布尔值来用  0当成false  所有其他整数值当成真

逻辑操作符用来编写逻辑表达式

逻辑表达式的计算结果必须是布尔值 

双目逻辑操作符包括== != != < > <= >=

单目逻辑操作服!对一个布尔值求反

逻辑操作符比算术操作符的优先级低    //计算顺序不明确的时候加上()可以让程序易懂

若多个逻辑关系之间需要使用&&或||连接

只有当所有基本表达式计算结果都是true的时候&&连接后的表达式结果才是true 否则是false

只要有一个逻辑表达式的计算结果是true,则用||连接后的复杂表达式计算结果就是true

&&和||当前面计算已经可以得出表达式结果时,出现短路,后面的表达式不再计算

位操作符用来对二进制形式进行计算

双目位操作符包括按位与&,按位或|,按位异或^

双目位操作符都是先把参与计算的数据的二进制形式表达出来,然后两个数字的对应数位进行计算

只有 1 & 1=1 其他的都是0;

按位与(&)可以把一个数字中的某个二进制数位清除成0

某个数位和0做按位与的结果一定是0

某个数位和1做按位与的结果不变

按位或(|)对应数位上的数字进行或计算 只0 | 0 =0 其他的都是1

按位或可以把一个数字中的某些数位设置成0

某个数位和0做按位或结果不变

某个数位和1做按位或结果是1

按位异或(^)把对应上数位上的数进行异或运算  只有1 ^ 0=1 其他的都是0

按位异或(^)当两个数不同时得1,可以把一个数的某些数位求反

某个数位和0做按位异或结果不变

某个数位和1做按位异或便相反数字

作业:

1.如果年份能被4整除但不能被100整除则这个年份是闰年,如果年份可以被400整除则也是闰年,假设变量year中记录了一个年份,编写一个逻辑表达式当这个年份是闰年的时候结果是true否则是false
(year%400==0)||((year%4==0)&&(year%100!=0))    (!(year%400))||((!(year%4))&&(year%100))

2.使用一个char类型变量ch的最低三个二进制控制红绿的。bit0控制绿灯 bit1控制黄灯 bit2控制红灯 。数位是1点亮是0熄灭
1)编写语句在不知道变量内容的情况下点亮红灯熄灭另外两个灯   ch|100  
2)如果现在绿灯点亮,另外两个灯熄灭,编写语句熄灭绿灯点亮黄灯。ch^011
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  标准C 达内