一、printf() 将变量的内容输出到显示器上
四种用法
1. printf("字符串");
2. printf(“输出控制符”,输出参数);
3. printf(“输出控制符1 输出控制符2 。。。”,输出参数1,输出参数2);
输出控制符和输出参数的个数必须一一对应
4. printf(“输出控制符 非输出控制符”,输出参数);
输出控制符包含如下
%d int
%ld long int
%c char
%f float
%lf double
%x(或者%X后者%#X) int 或 long int huo short int
%o 同上
%s 字符串
为什么需要输出控制符
1. 0 1组成的代码可以表示数据也可以表示指令
2. 如果01组成的代码表示的是数据的话,那么同样的01代码组合不同的输出格式。就会有不同的输出结果。
二、scanf() [通过键盘将数据输入到变量中]
两种用法:
用法一: scanf("输入控制符",输入参数)
功能: 将从键盘输入的字符转化为输入控制符所规定格式的数据,然后存入以输入参数的值为地址地变量中
用法二: scanf("非输入控制符 输入控制符",输入参数);
功能: 将从键盘输入的字符转化为输入控制符所规定格式的数据,然后存入以输入参数的值为地址的变量中,非输入控制符必须原样输入。
如果使用scanf编写出高质量代码
1. 使用scanf之前最好先使用printf提示用户以什么样的方式来输入
2. scanf中尽量不要使用非输入控制符,尤其是不要用\n
3. 应该编写代码对用户的非法输入做适当的处理
while((ch = getchar())! = '\n')
continue;
三、运算符
算术运算符
+ - * /(除) %(取余数)
关系运算符
〉 >= < <= !=(不等于) ==(等于)
逻辑运算符
!(非) &&(并且) ||(或)
!真 假
!假 真
真&&真 真
真&&假 假
假&&真 假
假&&假 假
真||假 真
假||真 真
真||真 真
假||假 假
C语言对真假的处理
非零是真
零是假
真是1表示
假是0表示
&&左边是假 右边肯定不会执行
||左边是真 右边肯定不会执行
赋值运算符
= += *= /= -=
优先级
算术 〉 关系 > 逻辑 > 赋值
四、位运算符
& -- 按位于
&& 逻辑与 也叫并且
&&与& 的含义完全不同
1&1 = 1
1&0 = 0
0&1 = 0
0&0 = 0
5&7 = 5 21&7 = 5
5&1 = 1 5&10 = 0
| -- 按位或
|| 逻辑或
| 按位或
1|0 = 1
1|1 = 1
0|1 = 1
0|0 = 0
~ -- 按位取反
~ i 就是把 i 变量所有的二进制取反
^ -- 按位异或
相同为零
不同为1
1^0 = 1
0^1 = 1
1^1 = 0
0^0 = 0
<< -- 按位左移
i<<1 表示把 i 的所有二进制位左移一位 ,右边补零
左移n位相当于乘以2的n次方
面试题:
A> i = i*8;
B> i = i<<3;
请问上述两个语句,哪个语句执行的速度快
答案:B快
>> -- 按位右移
i>>3 表示把 i 的所有二进制位右移3位 ,左边一般是0,当然也可能补1
右移n位相当于除以2的n次方,前提是数据不能丢失
面试题:
A> i = i/8;
B> i = i>>3;
请问上述两个语句,哪个语句执行的速度快
答案:B快
位运算的现实意义
通过位运算符我们可以对数据的操作精确到每一位