使用特权
if(条件1) //if只能出现第一个条件,并且只能出现一次 { 语句1; } else //else只能出现最后,并且也只能出现一次。 { 语句2; } 语句3;
if(条件1) //if只能出现第一个条件,并且只能出现一次 { 语句1; } else if(条件2) //else if只能出现中间或最后,可以出现多次 { 语句2; } ... else if(条件N) //else if只能出现中间或最后,可以出现多次 { 语句N; } else //else只能出现最后,并且也只能出现一次。 { 语句N+1; } 语句N+2;
if(条件1) //if只能出现第一个条件,并且只能出现一次 { 语句1; } else if(条件2) //else if只能出现中间或最后,可以出现多次 { 语句2; } ... else if(条件N) //else if只能出现中间或最后,可以出现多次 { 语句N; } 语句N+1;
/*---C语言学习区域的开始。-----------------------------------------------*/ //x这个变量作为条件判断的变量 unsigned char x=5; //a,b,c这3个变量作为输出判断结果,0代表什么语句都没执行,1代表执行了语句1, //2代表执行语句2,3代表执行语句3。 unsigned char a=0; unsigned char b=0; unsigned char c=0; void main() //主函数 { //第一种“二选一” if(x>6) { a=1; //1代表执行了“语句1” } else { a=2; //2代表执行了“语句2” } //第二种“多选一” if(x>6) { b=1; //1代表执行了“语句1” } else if(7==x) { b=2; //2代表执行了“语句2” } else { b=3; //3代表执行了“语句3” } //第三种“多选一或者什么都不选” if(x>6) { c=1; //1代表执行了“语句1” } else if(7==x) { c=2; //2代表执行了“语句2” } else if(8==x) { c=3; //3代表执行了“语句3” } View(a); //把第1个数a发送到电脑端的串口助手软件上观察。 View(b); //把第2个数b发送到电脑端的串口助手软件上观察。 View(c); //把第3个数c发送到电脑端的串口助手软件上观察。 while(1) { } } /*---C语言学习区域的结束。-----------------------------------------------*/
开始... 第1个数 十进制:2 十六进制:2 二进制:10 第2个数 十进制:3 十六进制:3 二进制:11 第3个数 十进制:0 十六进制:0 二进制:0
变量a为2。(2代表执行了语句2) 变量b为3。(3代表执行了语句3) 变量c为0。(0代表什么语句都没执行)
数据类型 数组名[数组元素总数N];
unsigned char x[3]; //这里的3是数组内部元素的总数,但不是下标。
数据类型 数组名[数组元素总数N]={元素0, 元素1,…元素N-1};
unsigned char y[3]={10,11,12};
unsigned char y[3]={10,11,12}; //没有省略元素总数的写法
unsigned char y[]={10,11,12}; //在初始化的情况下,省略了元素总数的写法。
/*---C语言学习区域的开始。-----------------------------------------------*/ unsigned char x[3]; //此处的3不是下标,而是元素总数,里面的3个变量没有初始化 unsigned char y[3]={10,11,12}; //里面三个元素变量y[0],y[1],y[2]分别初始化为10,11,12 unsigned char i=0; //定义和初始化一个变量。用来做x数组的下标。 void main() //主函数 { x[i]=25; //此时下标i为0.相当于把25赋值给x[0] i=i+1; //i由0变成1. x[i]=26; //此时下标i为1.相当于把26赋值给x[1] i=i+1; //i由1变成2. x[i]=27; //此时下标i为2.相当于把27赋值给x[2] x[i]=x[i]+1; //此时x[2]自加1变成了28 View(x[0]); //把第1个数x[0]发送到电脑端的串口助手软件上观察。 View(x[1]); //把第2个数x[1]发送到电脑端的串口助手软件上观察。 View(x[2]); //把第3个数x[2]发送到电脑端的串口助手软件上观察。 View(y[0]); //把第4个数y[0]发送到电脑端的串口助手软件上观察。 View(y[1]); //把第5个数y[1]发送到电脑端的串口助手软件上观察。 View(y[2]); //把第6个数y[2]发送到电脑端的串口助手软件上观察。 while(1) { } } /*---C语言学习区域的结束。-----------------------------------------------*/
开始... 第1个数 十进制:25 十六进制:19 二进制:11001 第2个数 十进制:26 十六进制:1A 二进制:11010 第3个数 十进制:28 十六进制:1C 二进制:11100 第4个数 十进制:10 十六进制:A 二进制:1010 第5个数 十进制:11 十六进制:B 二进制:1011 第6个数 十进制:12 十六进制:C 二进制:1100
jianhong_wu 发表于 2016-1-31 21:11 第三节:单片机最重要的一个特性。
数据类型 数组名[行数Y][列数X];
unsigned char a[2][3]; //此处的2代表有2行,3代表有3列。
unsigned char a[2][3]= { {0,1,2}, {3,4,5} };
unsigned char a[][3]= { {0,1,2}, {3,4,5} };
unsigned char a[2][3]= { 0,1,2,3,4,5 };
unsigned char a[2][3]= { 0,1,2, 3,4,5 };
/*---C语言学习区域的开始。-----------------------------------------------*/ unsigned char a[2][3]= //定义和初始化一个二维数组 { {0,1,2}, {3,4,5} }; void main() //主函数 { a[0][0]=8; //故意把第0行第0列的这个变量赋值8,让大家看看如何直接操作二维数组某个元素。 View(a[0][0]); //把第1个数a[0][0]发送到电脑端的串口助手软件上观察。 View(a[0][1]); //把第2个数a[0][1]发送到电脑端的串口助手软件上观察。 View(a[0][2]); //把第3个数a[0][2]发送到电脑端的串口助手软件上观察。 View(a[1][0]); //把第4个数a[1][0]发送到电脑端的串口助手软件上观察。 View(a[1][1]); //把第5个数a[1][1]发送到电脑端的串口助手软件上观察。 View(a[1][2]); //把第6个数a[1][2]发送到电脑端的串口助手软件上观察。 while(1) { } } /*---C语言学习区域的结束。-----------------------------------------------*/
开始... 第1个数 十进制:8 十六进制:8 二进制:1000 第2个数 十进制:1 十六进制:1 二进制:1 第3个数 十进制:2 十六进制:2 二进制:10 第4个数 十进制:3 十六进制:3 二进制:11 第5个数 十进制:4 十六进制:4 二进制:100 第6个数 十进制:5 十六进制:5 二进制:101
jianhong_wu 发表于 2016-4-3 10:38 第十二节:变量的定义和赋值。 【12.1 学习C语言的建议和方法。】 先提一些学C语言的建议和方法, ...
while(条件) { 语句1; 语句2; …… 语句N; } 语句N+1;
while(条件) 语句1; 语句2; …… 语句N; 语句N+1;
while(条件) { 语句1; } 语句2; …… 语句N; 语句N+1;
while(条件); 语句1; 语句2; …… 语句N; 语句N+1;
while(条件) { ; //这里的分号代表一条空语句 } 语句1; 语句2; …… 语句N; 语句N+1;
/*---C语言学习区域的开始。-----------------------------------------------*/ unsigned char a=0; //观察这个数最后的变化 unsigned char b=0; //观察这个数最后的变化 unsigned char i; //控制循环体的条件判断变量 void main() //主函数 { i=3; while(i) //i不断减小,直到变为0时才跳出此循环体 { a=a+1; //当i从3减少到0的时候,这条语句被循环执行了3次。 i=i-1; //循环的条件不断发生变化,不断减小 } i=0; while(i<3) //i不断增大,当i大于或者等于3时才跳出此循环体 { b=b+2; //当i从0增加到3的时候,这条语句被循环执行了3次。 i=i+1; //循环的条件不断发生变化,不断增加 } View(a); //把第1个数a发送到电脑端的串口助手软件上观察。 View(b); //把第2个数b发送到电脑端的串口助手软件上观察。 while(1) { } } /*---C语言学习区域的结束。-----------------------------------------------*/
开始... 第1个数 十进制:3 十六进制:3 二进制:11 第2个数 十进制:6 十六进制:6 二进制:110
do { 语句1; 语句2; …… 语句N; } while(条件);
for(变量的初始化语句; 变量的条件判断;变量在执行一次循环体后自加的步进变化) { 语句1; 语句2; …… 语句N; }
for(i=0; i<3;i++) { 语句1; 语句2; …… 语句N; }
i=0; //进入循环体之前先初始化给予初值 while(i<3) { 语句1; 语句2; …… 语句N; i++; //执行一次循环体之后此变量自加发生变化 }
for(i=3; i>0;i--) { 语句1; 语句2; …… 语句N; }
i=3; //进入循环体之前先初始化给予初值 while(i>0) { 语句1; 语句2; …… 语句N; i--; //执行一次循环体之后此变量自减发生变化 }
for(i=0; i<3;i++) //注意,这里没带分号。 语句1; 语句2; …… 语句N;
for(i=0; i<3;i++) //注意,这里没带分号。 { 语句1; } 语句2; …… 语句N;
for(i=0; i<3;i++); //注意,这里带分号。 语句1; 语句2; …… 语句N;
for(i=0; i<3;i++) { ; //空语句。 } 语句1; 语句2; …… 语句N;
for(i=0;i<=3;i++); //小于等于的情况。这种写法是合法的。 for(i=0;i!=3;i++); //不等于的情况。这种写法是合法的。 for(i=0;i==3;i++); //等于的情况。这种写法是合法的。
/*---C语言学习区域的开始。-----------------------------------------------*/ unsigned char a=0; //观察这个数最后的变化 unsigned char b=0; //观察这个数最后的变化 unsigned char c=0; //观察这个数最后的变化 unsigned char i; //控制循环体的条件判断变量 void main() //主函数 { i=3; do { a=a+1; //每执行一次循环体a就增加1,此行代码被循环执行了3次 i=i-1; //i不断变小 }while(i); //i不断变小,当i变为0时才跳出此循环体 for(i=0;i<3;i++) { b=b+2; //此行代码被循环执行了3次 } for(i=3;i>0;i--) { c=c+3; //此行代码被循环执行了3次 } View(a); //把第1个数a发送到电脑端的串口助手软件上观察。 View(b); //把第2个数b发送到电脑端的串口助手软件上观察。 View(c); //把第3个数c发送到电脑端的串口助手软件上观察。 while(1) { } } /*---C语言学习区域的结束。-----------------------------------------------*/
开始... 第1个数 十进制:3 十六进制:3 二进制:11 第2个数 十进制:6 十六进制:6 二进制:110 第3个数 十进制:9 十六进制:9 二进制:1001
while(…)或者for(…) //循环体的条件判断入口处 { //循环体开始 语句1; 语句2; continue; 语句3; …… 语句N; } //循环体结束
while(…)或者for(…) //循环体的条件判断入口处 { //循环体开始 语句1; 语句2; } //循环体结束
while(…)或者for(…) //循环体的条件判断入口处 { //循环体开始 语句1; 语句2; if(某条件) { continue; } 语句3; …… 语句N; } //循环体结束
while(…)或者for(…) //循环体的条件判断入口处 { //循环体开始 语句1; 语句2; break; 语句3; …… 语句N; } //循环体结束 语句(N+1); //循环体之外语句
while(…)或者for(…) //循环体的条件判断入口处 { //循环体开始 语句1; 语句2; if(某条件) { break; } 语句3; …… 语句N; } //循环体结束 语句(N+1); //循环体之外语句
while(…) { 语句1; 语句2; while(…) { 语句3; break; 语句4; } 语句5; } 语句6;
/*---C语言学习区域的开始。-----------------------------------------------*/ unsigned char a=0; //观察这个数最后的变化 unsigned char b=0; //观察这个数最后的变化 unsigned char c=0; //观察这个数最后的变化 unsigned char d=0; //观察这个数最后的变化 unsigned char i; //控制循环体的条件判断变量 void main() //主函数 { //i<6的条件判断是在进入循环体之前判断,而i的自加1是在执行完一次循环体之后才自加的。 for(i=0;i<6;i++) { a=a+1; //被执行了6次,分别是第0,1,2,3,4,5次 if(i>=3) //当i等于3的时候,开始“拦截”continue后面的代码。 { continue; //提前结束本次循环,准备进入下一次循环 } b=b+1; //被执行了3次,分别是第0,1,2次 } //i<6的条件判断是在进入循环体之前判断,而i的自加1是在执行完一次循环体之后才自加的。 for(i=0;i<6;i++) { c=c+1; //被执行了4次,分别是第0,1,2,3次 if(i>=3) //当i等于3的时候,直接跳出当前循环体,结束此循环体的“生命周期”。 { break; //马上跳出当前循环体 } d=d+1; //被执行了3次,分别是第0,1,2次 } View(a); //把第1个数a发送到电脑端的串口助手软件上观察。 View(b); //把第2个数b发送到电脑端的串口助手软件上观察。 View(c); //把第3个数c发送到电脑端的串口助手软件上观察。 View(d); //把第4个数d发送到电脑端的串口助手软件上观察。 while(1) { } } /*---C语言学习区域的结束。-----------------------------------------------*/
开始... 第1个数 十进制:6 十六进制:6 二进制:110 第2个数 十进制:3 十六进制:3 二进制:11 第3个数 十进制:4 十六进制:4 二进制:100 第4个数 十进制:3 十六进制:3 二进制:11
for(m=1;m<=12;m++) //大循环。一年12个月。这里的m看作月,代表一年12个月的大循环。 { for(d=1;d<=30;d++) //内嵌小循环。一月30天。这里的d看作天,代表一个月30天的小循环。 { } }
for(i=0;i<2;i++) //大循环 { 语句1; for(k=0;k<3;k++) //内嵌的小循环 { 语句2; } 语句3; }
语句1; //第1次大循环开始 语句2; 语句2; 语句2; 语句3; 语句1; //第2次大循环开始 语句2; 语句2; 语句2; 语句3;
a=0; b=0; for(i=0;i<2;i++) //大循环 { a=a+1; //被执行了2次 for(k=0;k<3;k++) //内嵌的小循环 { b= b+1; //被执行了6次 } }
a=0; b=0; i=0; //控制大循环的变量初始化 while(i<2) //大循环 { a=a+1; //被执行了2次 k=0; //控制小循环的变量初始化 while(k<3) //内嵌的小循环 { b= b+1; //被执行了6次 k=k+1; } i=i+1; }
a[0][0]=0; a[0][1]=0; a[0][2]=0; a[1][0]=0; a[1][1]=0; a[1][2]=0;
for(i=0;i<2;i++) //大循环 { for(k=0;k<3;k++) //内嵌的小循环 { a[i][k]=0; } }
for(k=0;k<N;k++);
for(i=0;i<M;i++) //大循环 { for(k=0;k<N;k++); //内嵌的小循环 }
/*---C语言学习区域的开始。-----------------------------------------------*/ unsigned char a=0; //观察这个数最后的变化 unsigned char b=0; //观察这个数最后的变化 unsigned char c=0; //观察这个数最后的变化 unsigned char i; //控制大循环体的条件判断变量 unsigned char k; //控制内嵌小循环体的条件判断变量 void main() //主函数 { for(i=0;i<2;i++) //大循环 { a=a+1; //被执行了2次 for(k=0;k<3;k++) //内嵌小循环 { b=b+1; //被执行了6次,也就是i乘以k,2乘以3等于6. } c=c+1; //被执行了2次 } View(a); //把第1个数a发送到电脑端的串口助手软件上观察。 View(b); //把第2个数b发送到电脑端的串口助手软件上观察。 View(c); //把第3个数c发送到电脑端的串口助手软件上观察。 while(1) { } } /*---C语言学习区域的结束。-----------------------------------------------*/
开始... 第1个数 十进制:2 十六进制:2 二进制:10 第2个数 十进制:6 十六进制:6 二进制:110 第3个数 十进制:2 十六进制:2 二进制:10
switch(变量) //根据变量的数值大小从对应的case入口进来 { case 0: //入口0 语句0; break; //switch程序体的出口之一 case 1: //入口1 语句1; break; //switch程序体的出口之一 case 2: //入口2 语句2; break; //switch程序体的出口之一 } //最下面的花括号也是一个switch程序体的出口之一
if(0==变量) { 语句0; } else if(1==变量) { 语句1; } else if(2==变量) { 语句2; }
switch(变量) //根据变量的数值大小从对应的case入口进来 { case 0: //入口0 语句0; break; case 1: //入口1 语句1; case 2: //入口2 语句2; break; case 3: //入口3 语句3; break; } //最下面的花括号也是一个switch程序体的出口之一
switch(变量) { case 2: 语句2; break; case 0: 语句0; break; case 1: 语句1; break; }
switch(变量) { case 0: 语句0; break; case 3: 语句3; break; case 9: 语句9; break; }
switch(变量) //根据变量的数值大小从对应的case入口进来 { case 0: //入口0 语句0; break; //switch程序体的出口之一 case 1: //入口1 语句1; break; //switch程序体的出口之一 case 2: //入口2 语句2; break; //switch程序体的出口之一 default: //当所有的case不满足,就从default的入口进来 语句3; break; } //最下面的花括号也是一个switch程序体的出口之一
if(0==变量) { 语句0; } else if(1==变量) { 语句1; } else if(2==变量) { 语句2; } else //相当于switch中的default { 语句3; }
switch(a) { case 1: switch(b) //内嵌的switch { case 1: Break; case 2: Break; } Break; case 2: Break; }
/*---C语言学习区域的开始。-----------------------------------------------*/ unsigned char k; //switch的入口变量 unsigned char a; //观察此变量的变化来理解switch的执行顺序 void main() //主函数 { a=0; k=2; //入口变量等于2 switch(k) { case 0: //入口0 a++; break; //跳出switch case 1: //入口1 a++; case 2: //入口2,上述k等于2所以从这里进来 a++; case 3: //入口3 a++; case 4: //入口4 a++; break; //跳出switch case 5: //入口5 a++; break; //跳出switch default: //当前面没有遇到匹配的case入口时,就从此default入口进来 a++; break; //跳出switch } //最后一个switch的花括号也是跳出switch View(a); //把第1个数a发送到电脑端的串口助手软件上观察。 while(1) { } } /*---C语言学习区域的结束。-----------------------------------------------*/
开始... 第1个数 十进制:3 十六进制:3 二进制:11
/*---C语言学习区域的开始。-----------------------------------------------*/ void HanShu(void); //子函数声明的第一区域 unsigned char a; //全局变量定义的第二区域 unsigned char b; unsigned char c; void HanShu(void) //子函数定义的第三区域 { a++; //子函数的代码语句 b=b+5; c=c+6; } void main() //主函数 { a=0; b=0; c=0; HanShu() ; //子函数被调用的第四区域 c=a+b; while(1) { } } /*---C语言学习区域的结束。-----------------------------------------------*/
/*---C语言学习区域的开始。-----------------------------------------------*/ void HanShu(void); //子函数的声明 void HanShu(void) //子函数的定义 { 语句1; 语句2; } void main() //主函数 { 语句3; HanShu() ; //子函数的被调用 语句4; while(1) { } } /*---C语言学习区域的结束。-----------------------------------------------*/
语句3; 语句1; 语句2; 语句4;
/*---C语言学习区域的开始。-----------------------------------------------*/ void HanShu(void); //子函数声明的第一区域 unsigned char a; //全局变量定义的第二区域 void HanShu(void) //子函数定义的第三区域 { a++; //子函数的代码语句 } void main() //主函数 { a=0; a++; HanShu() ; //子函数被调用的第四区域 a++; View(a); //把第1个数a发送到电脑端的串口助手软件上观察。 while(1) { } } /*---C语言学习区域的结束。-----------------------------------------------*/
jianhong_wu 发表于 2016-1-18 11:14 第一节:我的价值观。 我2006年毕业,2009年就出来做自由职业者在深圳以接单片机项目谋生,到现在我有 ...
发表回复 本版积分规则 回帖后跳转到最后一页
人才类勋章
发帖类勋章
时间类勋章
等级类勋章
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注电源系统设计
扫码关注21ic项目外包
扫码浏览21ic手机版
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才
京公网安备 11010802024343号