逻辑运算符和运算或者运算和非运算&&||! && 和或运算符|| 是二元运算符。 已离开关联性。 非运算符“!” 是具有右结合性的一元运算符。 逻辑运算的值也是“真”和“假”,用“1”和“0”表示。 一元运算符 > 算术运算符 > 关系运算符 > 逻辑运算符 > 赋值运算符 1 第 3 章:控制语句 1. if 语句 C 语言中 if 语句有三种基本形式。 1、如果表达式的值为true,则执行后面的语句,否则不执行该语句。 if(表达式)语句; 2. 如果表达式的值为 true,则执行语句 1,否则执行语句 2。 If (表达式) 语句 1; else 语句 2; 3、依次判断表达式的值。 当某个值为true时,执行其对应的语句。 然后它跳出整个if语句并继续执行程序。 如果所有表达式都为假,则执行语句 n。 然后继续后续程序。 If (表达式 1) 语句 1; else if (表达式 2) 语句 2; else if (表达式 3) 语句 3;…else if (表达式 m) 语句 m; else 语句 n; 2、条件运算符和条件表达式是由条件运算符组成的。 条件表达式的一般形式为:表达式1? 表达式2:表达式3。求值规则为:如果表达式1的值为真,则将表达式2的值作为条件表达式的值,否则将表达式3的值作为整个条件表达式的值条件表达式。
示例: max=(a>b)?a:b; 含义:如果条件语句中仅执行单个赋值语句,则通常可以使用条件表达式来实现此目的。 不仅使程序更加简单,而且提高了运行效率。 3、switch语句 C语言还提供了另一种switch语句,用于多分支选择。 其一般形式为:switch(表达式){case常量表达式1:语句1; case 常量表达式 2: 语句 2; …case 常量表达式 n: 语句 n;default: 语句 n+1;} 其语义是:计算表达式的值。 并将其与后面的常量表达式值一一比较。 当表达式的值等于某个常量表达式的值时,执行后面的语句,然后不做任何判断。 2 继续执行case后的所有后续语句。 。 如果所有case后表达式的值都与常量表达式不同,则执行default后面的语句。 4、循环结构程序while语句 while语句的一般形式为: while(表达式)语句; 特点:判断后执行 使用说明: 1、如果循环体中包含多条语句,必须用{}括起来,形成复合语句。 2、注意循环条件的选择,避免无限循环。 do-while 语句 do-while 语句的一般形式为: do 语句; while(表达式); do-while语句的语义是:先执行一次循环体语句,然后判断表达式的值。 如果为 true(非 0)),则循环继续,否则循环终止。
do-while 语句与 while 语句的区别在于 do-while 是先执行后判断,所以 do-while 必须至少执行一次循环体。 while while先判断后执行,如果条件不满足,则不会执行循环体中的语句。 for语句 for语句是C语言提供的循环语句,功能更强,应用也更广泛。 其一般形式为:for(表达式1;表达式2;表达式3)语句; 表达式1通常用于给循环变量赋予初始值,通常是赋值表达式。 也允许在for语句之外给循环变量赋初值,这种情况下可以省略表达式。 表达式2通常是循环条件,通常是关系表达式或逻辑表达式。 表达式3通常可以用来修改循环变量的值,通常是赋值语句。 1. 首先计算表达式 1 的值。 2. 再次计算表达式 2 的值。 如果值为 true(非 0),则执行一次循环体,否则跳出循环。 3. 然后计算表达式3的值,返回步骤2并重复。 在整个 for 循环中,表达式 1 仅计算一次,而表达式 2 和表达式 3 可能会计算多次。 传输语句在C语言中提供了四种类型的传输语句:goto、break、continue和return。 1.一般不使用goto语句。 goto 语句也称为无条件转移语句。 其一般格式如下: goto语句标号; 其中语句标号是根据标识符编写的符号。 它放置在某个语句行和冒号(:)之前。
语句标签用于标识语句并与 goto 语句结合使用。 2. Break 语句 Break 语句只能用在 switch 语句或循环语句中。 它的作用是跳出switch语句或当前循环,执行后续程序。 由于break语句的传输方向是明确的,因此不需要语句标签来匹配它。 Break语句的一般形式为:break; 使用break语句可以使循环语句有多个出口,使编程在某些情况下更加灵活方便。 3. continue 语句 continue 语句只能用在循环体中。 其一般格式为:继续; 它的语义是:结束本次循环,即循环体中的Continue语句之后的语句将不再执行,而转入下一个循环条件的判断和判断来执行。 需要注意的是,该语句只是结束本级当前循环,并不会跳出循环。 第四章:数组 1、数组定义如下:int a[10],b[3+2],c[7+FD]; FD 是常数。 注意:方括号中不能使用变量来表示元素的个数,但可以是符号常量或常量。 表达。 2. 数组元素的表示方法 数组元素的一般形式为: 数组名[下标] 如:a[5]、a[i+j]、a[i++] 注:下标可以是变量,也可以是变量表达式 3.初始化赋值的一般形式为:静态类型说明符数组名[常量表达式] = {value, value…value}; 示例: static int a[10]={ 0,1,2,3,4,5,6 ,7,8,9 }; 第五章:函数 1. 定义的一般形式 1. 无参数函数的一般形式化过程为: void delay(void) 2. 有参函数的一般形式类型说明符: 函数名(形参列表) 形参类型描述{类型描述语句} 描述:return 返回值命令 2、函数调用的一般形式为: 函数可以通过以下方式调用: 1、z=max(x,y) 是一个赋值表达式,将max 到变量 z。
另一种是现代格式,其一般形式为:类型说明符称为函数名(类型参数、类型参数…); 函数的值只能通过return语句返回给调用函数。 return语句的一般形式为:return表达式; 或:返回(表达式); C 语言中,变量的存储类型描述有四种类型: auto 自动变量 寄存器寄存器变量 extern 外部变量 static 静态变量 4 第 6 章:指针 1、指针变量的类型描述的一般形式为:类型说明符 *变量名; staic int *p2 /*p2是指向静态整型变量的指针变量 */ 注意:定义时使用*号2。 指针变量的赋值方法 (1) 指针变量的初始化方法 int a;int *p=&a; /*定义并赋值*/int a[5],*pa=a //或者写:int a[5],*pa=&a[0] 数组名也是数组首地址(2)赋值语句的方法 int a;int *p; //定义p=&a;//赋值指令:定义后,赋值时不能加*。 不是,是指针变量 3、指针变量的操作需要地址运算符&和内容运算符 *int a=5,*p=&a;//*这里的P是定义指针变量并赋值&a表示引用数据的地址 printf("%d",*p); //*这里的P表示取指针P的地址中的内容 4.加减算术运算 对于指向数组的指针变量,可以加或减一个整数n。 假设pa是指向数组a的指针变量,那么pa+n、pa-n、pa++、++pa、pa–、–pa操作都是合法的。 第 7 章:枚举、位运算 1. 按位运算符和按位与 | 按位或 ^ 按位异或 ~ 求反 > 右移 5 2. 汇编传输到 PICC 1. 字代码头文件:#include
,它是许多头文件的集合。 寄存器赋值比较:C语言汇编语言PORTA=200MOVLW200MOVWFPORTA 说明:C操作寄存器时,不需要考虑页问题,一切都由C自动完成。但是汇编不行。 位操作比较:C 语言汇编语言 RA0=0BCF PORTA, 0RA2=1BSF PORTA, 2 注:C 中不需要考虑页问题。 内存分配问题:C 语言汇编语言 INT PICC 简单延时程序:void delay( uint m){uint i,j;for(i=0;i//包含微控制器预定义的内部资源<<<First Step>〉〉 #include “pc68.h”//包含自定义头文件__CONFIG (HS & PROTECT & PWRTEN & BOREN & WDTDIS); // 定义芯片工作时的配置位 void SetSFR(void); // 声明本模块调用的函数类型 void Clock(void ); void KeyScan(void); void Measure(void); void LCD_Test(void); void LCD_Disp(unsigned char); unsigned char secondary, 分钟, 小时;//定义变量位flag1, flag2; void main(void)//函数和子程序 {SetSFR(); PORTC = 0x00;TMR1H += TMR1H_CONST;LED1 = LED_OFF;LCD_Test();while(1){//程序工作主循环 asm("clrwdt");//清除看门狗 Clock();//更新时钟 KeyScan() ;//扫描键盘 Measure();//数据测量 SetSFR();//刷新特殊功能寄存器} } 2、PICC 中常用变量类型 bit1 布尔型位变量,0 或 1,两种取值:char8 有符号或无符号字符变量。 PICC默认char类型变量为7位无符号数,但可以通过编译选项改为有符号字节变量unsigned char 8位无符号字符变量。 3、人保财险