嵌入式Linux编程 Android软件开发
2015年(16)
分类: C/C++
2015-04-29 21:08:53
一 输入和输出
1.整数 [%d]
<1>输入整数
int data;
scanf("%d",data);//错误
scanf("%d",地址值);
scanf("%d",&data);
注意:在C源中获取变量的地址 : &变量名
int data1,data2;
scanf("%d",&data1);
scanf("%d",&data2);
或
scanf("%d%d",&data1,&data2);
例如:
100200回车键 => 错误
=======================================
100 200回车键 => 正确
或
100回车
200回车
<2>输出整数
printf("用户的内容%d\n",变量名);
printf("The data is %d\n",data); "\n:输出结束后,换行"
printf("The data is d% /n",data);//错误
printf("The data is %d \n",&data);//错误
printf("The data is %d %d\n",data1,data2);
练习:
int a,b,c;给三个变量输入值 100 200 300
最后输出a,b,c的值,输出的格式=> a:100 b:200 c:300
点击(此处)折叠或打开
2.浮点数 [%f]
float a;
scanf("%f",&a);
printf("a = %f",a);
printf("a = %.1f",a);//精确到小数点后面1bit
printf("a = %.2f",a);//精确到小数点后面2bit
注意:输入的时候,空格或回车符作为分格符号
练习:
float a,b,c;
输入的值:0.5 0.3 1.4
输出的格式:a = 0.5,b = 0.3,c = 1.4
点击(此处)折叠或打开
3.字符[8bit] [%c]
=================================================================================
C语言中的数据:整数 ,小数,字符,字符串
字符: '字母' a(不是字符) 'a'(字符)
注意:
字符实际在内存中存储的时候,是以ASCII碼(整数)
(对字符的编码[0-255]: 0-127 标准的ASCII碼 128-255:IBM公司扩展)的形式存储
Linux 通过man ascii 查看ASCII碼表
需要记住:
'\0'->0 'a'->97 'A'->65 '0':48
'A' + 32 ---> 'a' 'a'- 32-->'A'
'0' - ('0')[48] --> 0 '1' - '0'[48] ---> 1
================================================================================
<1>输入
scanf("%c",&a);
scanf("%c%c",&a,&b);
注意:此时连续读入字符(空格和回车符不作为输入的分割符);
<2>输出
printf("a = %c\n",a);
练习:
char a,b,c,d;
输出的结果a=3 b=a c=4 d=f
练习:
输入整数 200 250 300 给变量 a b c,然后输出
输入字符 '3' '5' 'f' 给变量 d e f,然后输出
输入小数 1.34 5.67 8.12 给变量h i j,然后输出
点击(此处)折叠或打开
二 C语言运算符
1.自增加[++] ,自减少[--];
int a = 100;
a --; //a = a - 1
a ++; //a = a + 1
注意:
如果自增加/减少 前置的时候,先操作,然后拿值
如果自增加/减少 后置的时候,先拿值,然后操作
b = a --; // b = a, a = a -1
b = --a; // a = a - 1,b = a
练习:
给变量a,b,c输入值100,200,300
然后让a自增加1,赋值给c ,让 b 的值赋值给c,然后自减1 ,最后输出a,b,c的值
2.算术运算符
加 + ,减 - ,乘 * ,除 / , 求余 %
注意:
<1> “/” 如果计算的两个数是整数,则为整除 10 / 3 = 3 , 3 / 10 = 0
<2> "%" 要求计算的两个数必须是整数 10 % 3 = 1 , 3 % 10 = 3
练习:
输入两个数,将计算结果输出
点击(此处)折叠或打开
3.关系运算符
大于 > , 小于 < ,大于等于 >= ,小于等于 <= ,等于 == ,不等于 !=
注意:
<1>关系运算符运算的结果 : 0[关系不成立] 1[关系成立]
<2>在C语言中非0即为真
4.逻辑运算符
逻辑与 && (且的关系) ,逻辑或 || (或的关系) , 逻辑非 !(假->真,真->假)
注意:
<1>&& 它的两个表达式的值,只要有一个为假,则运算结果为假 (一假必假)
特点[短路]:当第一个表达式计算结果为假的时候,第二个表达式将不会计算
<2>|| 它的两个表达式的值,只要有一个运算结果为真,则最终运算的结果为真(一真必真)
特点[短路]:当第一个表达式计算结果为真的时候,第二个表达式将不会计算
练习:
int a = 'a', b = 'b';
将a和b的值做减法,结果赋值给a,
a = a - b; //a = -1,b = 98
value = a ++ && b --;
printf("value = %d ,a = %d,b = %d\n",value,a,b);//value = 1,a = 0,b = 97
value = a || b ++;
printf("value = %d ,a = %d,b = %d\n",value,a,b);//value = 1,a = 0,b = 98
value = (a > b) || (a <= b);
printf("value = %d ,a = %d,b = %d\n",value,a,b);//value = 1,a = 0,b = 98
value = !a && !b;
printf("value = %d ,a = %d,b = %d\n",value,a,b);//value = 0,a = 0,b = 98
点击(此处)折叠或打开
5.位运算符
按位与 & , 按位 |, 按位异或 ^,按位反 ~ , 左移 << , 右移 >>
10101
& 01010
--------------------- 有0则为0
00000
10101
| 01010
-------------------- 有1则为1
11111
10101
~
------------------- 0变1,1变0
01010
10101
^ 00110
-------------------- 相同为0,不同为1
10011
<1>思考:如何判断两个数是否相等(不用关系运算符)?
用 "^",如果两个数相等,异或的结果必定是0,否则不为1
10101
^ 10101
--------------
00000
<2>思考:有个data值,我想将它的[0-3]bit变成1010,其它位不变?
data = data & ~0xf
data = data | 0xa
例如:
data = 45;
1 1 1 0 1
~0xf
1 0 0 0 0
&
-----------------------------
1 0 0 0 0
0xa
0 1 0 1 0
|
--------------------------------
1 1 0 1 0
//1 1 1 1 1 1 1
练习:把这个data值[0-6]位变成0100100,其它位不变
data = data & ~0x7f;
data = data | 0x24
===============================================================
逻辑移位[无符号类型变量]:
左移的时候,右边补0
右移的时候,左边补0
算术移位[有符号类型变量]:
正数
左移的时候,右边补0
右移的时候,左边补0
负数
左移的时候,右边补0
右移的时候,左边补1
===============================================================
练习:
char c;
unsigned char a = 0xfd;
char b = 0xfd;
c = a << 3;
c = a >> 3;
c = b >> 3;
c = b << 3;
6.赋值运算符号
= , += , -= ,*= ,/= , %=
a += 3 ;// a = a + 3
a *= 3 ;// a = a * 3
7.三目运算符
表达式1 ? 表达式2 : 表达式3;
结果:
如果表达式1的值为真,则计算结果为表达式2计算的结果,否则为表达式3计算的结果
练习:
1.输入一个数,将这个数[0-3]位变成0101 ,[5-6]变成 00,其它位不变
点击(此处)折叠或打开
2.输入两个数,将这两个数的值交换 [思考:如何不引入第三个变量,完成交换]
a = 3
b = 4
3.输入三个数,将三个数,从小到大,排列,然后输出 [不允许使用if语句]
a = 3;
b = 2;
c = 5;
=>
a = 2;
b = 3;
c = 5;
点击(此处)折叠或打开