嵌入式开发之C语言基础第三天&第四天学习笔记
2016-11-02 20:26
513 查看
c语言(三)---运算符与分支语句
单字符接收与输出
getchar()
如果接收单个字符,可以使用getchar()函数
char ch = getchar();
就会从键盘接收一个字符,赋值给ch变量
putchar()
输出单个字符
putchar(ch);
putchar('a');
缓冲区
键盘输入的数据,首先存放在缓冲区中,直到用户按下enter键,才会将缓冲区的数据输入到程序中,但是scanf函数,会残留最后按下的enter键也就是会残留一个回车字符在缓冲区中,从而导致后面的接收出现异常;
运算符优先级
1.伪运算符最高
2.单目运算符第二
3.双目运算符中:算术运算符>位运算符>逻辑运算符
4.同级运算符看结合性,右结合性的运算符只有赋值运算符与单目运算符
自增自减运算符
++/--
a++; a自身加1,相当于a = a + 1;
a--; a自身减1,相当于a = a - 1;
a = 1, b = 1;
c = a + b++;
表达式相当于两步:
1.c = a + b
2.b = b + 1
所以c = 2;b = 2;
c = a + (++b);
相当于两步:
1.b = b + 1;
2.c = a + b;
所以b = 2; c = 3;
if判断
c语言中对于判断表达式,0为真,非0为假
a = 9 这个表达式的结果就是9;
if(表达式或直接写数字);
if(0)也是可以的
一般形式
if ()
{
}
两路分支
if(a == 9)
{
}else{
}
多路分支
if(){
}else if(){
}else{
}
当if判断后只有一句代码的时候,{}可以省略:
if(a > 0)
printf("a 大于 0");
逻辑运算符
&& 逻辑与 且 条件1 &&
条件2
|| 逻辑或 或 条件1 ||
条件2
! 逻辑非 不是 !条件
switch语句
switch(表达式){
case 常量表达式1:
语句1;
break;
case 常量表达式2:
语句2;
break;
case 常量表达式n:
语句n;
break;
default:
语句n+1;
}
当表达式的值与某个常量表达式的值相等时,
即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。
for循环
for(循环变量赋初值;循环条件;循环变量增值)
{
循环语句;
}
执行顺序:1、初始语句 2、执行条件是否符合? 3、循环体 4、增加增量
for循环的循环体如果只有一条语句,for循环的大括号可以省略
(1)for语句的一般形式中的"表达式1"可以省略,此时应在for语句之前给循环变量赋初值.注意省略表达式1时,其后的分号不能省略.如for(;i<=100;i++){....};
(2)如果表达式2省略 即不判断循环条件,循环无终止地循环下去,也就是认为表达式2始终为真.
(3)表达式3也可以省略,但此时程序设计者应另外设法保证循环能正常结束.
(4)可以省略表达式1和表达式3,只有表达式2
即只给循环条件.
(5)三个表达式都可以省略,如:
for(;;)语句
相当于while(1)语句
即不设初值 不判断条件(认为表达式2为真值)循环变量不增值,无终止的执行循环体.
(6)表达式1也可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式.
while循环
while循环和for循环其实大同小异
格式:
while(条件)
{
循环体;
}
只要给定的条件为真,while
循环语句会重复执行循环体
do_while
一般形式为:
do{
语句
}while(表达式);
这个循环与while循环的不同在于:它先执行循环中的语句,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while循环至少要执行一次循环语句。
常用函数
exit() 结束程序 例: exit(0)
exit(0) 正常结束
exit(1) 主动结束
exit(-1) 错误结束
system(); 调用终端命令 例:system("clear")
生成随机数:
srand((unsigned)time(NULL));
设置随机数种子,如果没有,则每次的随机数是一样的。而且在整个程序中,只需要出现一次就可以了
rand()%5 生成0 1 2 3 4
中的随机数
rand()%10 + 90 生成90---99之间的随机数
单字符接收与输出
getchar()
如果接收单个字符,可以使用getchar()函数
char ch = getchar();
就会从键盘接收一个字符,赋值给ch变量
putchar()
输出单个字符
putchar(ch);
putchar('a');
缓冲区
键盘输入的数据,首先存放在缓冲区中,直到用户按下enter键,才会将缓冲区的数据输入到程序中,但是scanf函数,会残留最后按下的enter键也就是会残留一个回车字符在缓冲区中,从而导致后面的接收出现异常;
运算符优先级
1.伪运算符最高
2.单目运算符第二
3.双目运算符中:算术运算符>位运算符>逻辑运算符
4.同级运算符看结合性,右结合性的运算符只有赋值运算符与单目运算符
自增自减运算符
++/--
a++; a自身加1,相当于a = a + 1;
a--; a自身减1,相当于a = a - 1;
a = 1, b = 1;
c = a + b++;
表达式相当于两步:
1.c = a + b
2.b = b + 1
所以c = 2;b = 2;
c = a + (++b);
相当于两步:
1.b = b + 1;
2.c = a + b;
所以b = 2; c = 3;
if判断
c语言中对于判断表达式,0为真,非0为假
a = 9 这个表达式的结果就是9;
if(表达式或直接写数字);
if(0)也是可以的
一般形式
if ()
{
}
两路分支
if(a == 9)
{
}else{
}
多路分支
if(){
}else if(){
}else{
}
当if判断后只有一句代码的时候,{}可以省略:
if(a > 0)
printf("a 大于 0");
逻辑运算符
&& 逻辑与 且 条件1 &&
条件2
|| 逻辑或 或 条件1 ||
条件2
! 逻辑非 不是 !条件
switch语句
switch(表达式){
case 常量表达式1:
语句1;
break;
case 常量表达式2:
语句2;
break;
case 常量表达式n:
语句n;
break;
default:
语句n+1;
}
当表达式的值与某个常量表达式的值相等时,
即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。
for循环
for(循环变量赋初值;循环条件;循环变量增值)
{
循环语句;
}
执行顺序:1、初始语句 2、执行条件是否符合? 3、循环体 4、增加增量
for循环的循环体如果只有一条语句,for循环的大括号可以省略
(1)for语句的一般形式中的"表达式1"可以省略,此时应在for语句之前给循环变量赋初值.注意省略表达式1时,其后的分号不能省略.如for(;i<=100;i++){....};
(2)如果表达式2省略 即不判断循环条件,循环无终止地循环下去,也就是认为表达式2始终为真.
(3)表达式3也可以省略,但此时程序设计者应另外设法保证循环能正常结束.
(4)可以省略表达式1和表达式3,只有表达式2
即只给循环条件.
(5)三个表达式都可以省略,如:
for(;;)语句
相当于while(1)语句
即不设初值 不判断条件(认为表达式2为真值)循环变量不增值,无终止的执行循环体.
(6)表达式1也可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式.
while循环
while循环和for循环其实大同小异
格式:
while(条件)
{
循环体;
}
只要给定的条件为真,while
循环语句会重复执行循环体
do_while
一般形式为:
do{
语句
}while(表达式);
这个循环与while循环的不同在于:它先执行循环中的语句,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while循环至少要执行一次循环语句。
常用函数
exit() 结束程序 例: exit(0)
exit(0) 正常结束
exit(1) 主动结束
exit(-1) 错误结束
system(); 调用终端命令 例:system("clear")
生成随机数:
srand((unsigned)time(NULL));
设置随机数种子,如果没有,则每次的随机数是一样的。而且在整个程序中,只需要出现一次就可以了
rand()%5 生成0 1 2 3 4
中的随机数
rand()%10 + 90 生成90---99之间的随机数
相关文章推荐
- 嵌入式开发之linux基础第四天学习笔记 vim编辑器
- 嵌入式开发之Linux基础第三天学习笔记 linux系统命令(二)
- 嵌入式开发之Linux基础第二天学习笔记 linux系统命令(一)&其他
- iOS开发基础学习笔记——导航控制器2->导航栏(UINavigationBar)/工具栏(toolBar)/导航元素按钮(UINavigationItem)
- quick-cocos2d-x从零开始游戏开发笔记(二):Lua语言基础学习
- 嵌入式开发之C++基础学习笔记5--静态成员,友元,运算符重载,模板,文件流
- 学习MySQL_第三天_语言基础&数据定义功能
- 嵌入式开发之C基础学习笔记07--编译预处理
- Android&nbsp;Map开发基础知识学习笔记
- [java学习笔记]java语言基础概述之数组的定义&常见操作(遍历、排序、查找)&二维数组
- [java学习笔记]java语言基础概述之运算符&程序流程控制&for循环嵌套
- [java学习笔记]java语言基础概述之内存的划分&堆和栈
- 嵌入式开发之C基础学习笔记02--第一个例子分析
- JSP&Servlet学习笔记(1)Web开发基础理论
- <Test-Driven Development with Python>学习笔记 第一部分 测试驱动开发基础
- 嵌入式开发之C基础学习笔记04--控制流语句
- 嵌入式开发之C基础学习笔记10--总结
- 嵌入式开发之C基础学习笔记06--数组和指针(非常重要,难点)
- 嵌入式开发之C基础学习笔记08--结构体和共用体
- java学习笔记]java语言基础概述之内存的划分&堆和栈