精华内容
下载资源
问答
  • 第一个单片机程序:#include //包含特殊功能寄存器定义的头文件sbitLED = P0^0;... //分号表示一条语句结束}先从程序语法上来分析一下:main 是主函数的函数名字,每一个 C 程序都必须有且仅有一个 main 函数。void ...

    第一个单片机程序:

    #include //包含特殊功能寄存器定义的头文件

    sbitLED = P0^0; //位地址声明,注意:sbit 必须小写、P 大写!

    void main(){ //任何一个 C 程序都必须有且仅有一个 main 函数

    LED = 0; //分号表示一条语句结束

    }

    先从程序语法上来分析一下:

    main 是主函数的函数名字,每一个 C 程序都必须有且仅有一个 main 函数。

    void 是函数的返回值类型,本程序没有返回值,用 void 表示。

    {}在这里是函数开始和结束的标志,不可省略。

    每条 C 语言语句以;结束的。

    逻辑上来看,程序这样写就可以了,但是在实际单片机应用中,存在一个问题。比如我们的程序空间可以容纳 100 行代码,但是我们实际上的程序只用了 50 行代码,当运行完了50 行,再继续运行时,第 51 行的程序不是我们想运行的程序,而是不确定的未知内容,一旦执行下去程序就会出错从而可能导致单片机自动复位,

    所以我们通常在程序中加入一个死循环,让程序停留在我们希望的这个状态下,不要乱运行

    ,有以下两种写法可以参考:

    参考程序一:

    #include

    sbitLED = P0^0;

    void main(){

    while(1){

    LED = 0;

    }

    }

    参考程序二:

    #include

    sbitLED = P0^0;

    void main(){

    LED = 0;

    while(1);

    }

    程序一的功能是程序在反复不断的无限次执行 LED = 0;这条语句,而程序二的功能是执行一次,然后程序直接停留下来等待,相对程序一来说程序二更加简洁一些。针对于图 2-6,我们这个程序能够把小灯点亮,但是这个程序却点不亮我们板子上的小灯,这是为什么呢?

    这里大家就要培养一个意识了,我们做单片机编程,实际上算是硬件底层驱动程序开发,这种程序的开发,是离不开电路图的,必须根据我们的电路图来进行程序的编写。如果我们设计电路板的电路图和图 2-6 一样的话,程序可以成功点亮小灯,但是如果不一样,就可能点不亮。

    我们的开发板上,还有一个 74HC138 作为 8 个 LED 小灯的总开关,而 P0.0 仅仅是个分开关。如同我们家里总是有一个供电总闸,然后每个电灯又有一个专门的开关,我们刚才的程序仅仅打开了那个电灯的开关,但是没有打开那个总电闸,所以程序需要加上这部分代码。

    因为这节课要介绍的内容比较多,所以我们把 74HC138 的原理以及为什么要加额外的代码在下节课统一介绍,这节课我们直接加上这部分代码,大家知道有这么一回事就可以了。

    #include //包含特殊功能寄存器定义的头文件

    sbitLED = P0^0; //位地址声明,注意:sbit 必须小写、P 大写!

    sbitADDR0 = P1^0;

    sbitADDR1 = P1^1;

    sbitADDR2 = P1^2;

    sbitADDR3 = P1^3;

    sbitENLED = P1^4;

    void main(){

    ENLED = 0;

    ADDR3 = 1;

    ADDR2 = 1;

    ADDR1 = 1;

    ADDR0 = 0;

    LED = 0; //点亮小灯

    while (1); //程序停止在这里

    }

    写了这么多啰嗦的语句,刚开始大家可能觉得很麻烦,为什么有的书上程序很简单就可以点亮小灯,我们这里却这么麻烦呢。大家要了解一点,就是我们做这个学习板,虽然仅仅提供给大家简单学习使用,但是我们也得按照实际产品的开发模式去设计,所以综合考虑因素很多,大家学到后边就会明白它的设计价值了,这里大家只要跟着我们去做就可以了。

    程序编好了,我们要对我们的程序进行编译,生成我们需要的可以下载到单片机里的文件,在编译之前,我们先要勾选一个选项,Project-->Options for Target „Target1‟...,或者直接点图 2-17 中红框内的快捷图标:

    0818b9ca8b590ca3270a3433284dd417.png

    图 2-17  工程选项图标

    在弹出的对话框中,点击 Output 选项页,勾选其中的“Create HEX File”复选框,然后点 OK,如图 2-18 所示。

    0818b9ca8b590ca3270a3433284dd417.png

    图 2-18  创建 HEX 文件

    设置好以后呢,点击“Project-->rebuild all target files”,或者鼠标点击图 2-19 中红框内的快捷图标,就可以对程序进行编译了。

    0818b9ca8b590ca3270a3433284dd417.png

    图2-19  编译程序

    编译完成后,在我们的 Keil 下方的 Output 窗口会出现相应的提示,大家注意看图 2-20,这个窗口告诉我们编译完成后的情况,data=9.0,指的是我们的程序使用了单片机内部的 256字节 RAM 资源中的 9 个字节,code=29 的意思是使用了 8K 代码 Flash 资源中的 29 个字节。

    当提示“0 Error(s), 0 warning(s)”表示我们的程序没有错误和警告,就会出现“creating hex file from “LED”...,意思是从当前工程生成了一个 HEX 文件,我们要下载到单片机上的就是这个HEX 文件。如果出现有错误和警告提示的话,就是 Error 和 warning 不是 0,那么我们就要对程序进行检查,找出问题,解决好了再进行编译产生 HEX 才可以。

    0818b9ca8b590ca3270a3433284dd417.png

    图2-20  编译输出信息

    到此为止,程序就编译好了,下边我们就要把编译好的程序文件下载到单片机里了。

    转自http://c.biancheng.net/cpp/html/1860.html

    展开全文
  • 分号表示语句结束标志

    千次阅读 2015-07-19 16:39:40
    类和结构体结束要加分号以表示结束。 struct sudent{ char name[20]; int score[4]; int average;};///请注意这里的分号 没有不行 我问是因为像for语句,{}里面的句子个分号,外面不用,定义...

    类和结构体结束要加分号以表示结束。



    struct sudent{
    char name[20];
    int score[4];
    int average;};///请注意这里的分号 没有不行
    我问是因为像for语句,{}里面的句子一句一个分号,外面不用,定义结构体不知道为什么非得弄得不一样
    
    我明白了,其实这不是一个牛角尖 而是一个细节问题 我看明白了其他的分号是属于student的,最后一个分号是属于struct定义语句的
    2009-08-08 19:25 提问者采纳
    楼主这个问题和··
    do{
    .
    }while();//这边为什么要;号一样···
    这是C语言里规定的····大家都没有办法 
    
    汗。这个我给你解释下吧
    因为for()下面肯定有语句
    while()也有语句,他没有语句的时候就需要用;,表示空语句
    
    你看do while。while后面没有语句了。为了防止他把下面的当成他的语句,所以加一个;,表示结束。
    同样的结构体也是这个思想感情的。
    相当于
    struct{}  这个后面也要有一个;才表达完整。
    这个楼主实在没必需钻牛角·····
    提问者评价
    感谢各位
    极其鄙视bati8888的态度
    评论(2) | 9 0
    2015-7-19 16:36s8435330songya
    是不是因为编译器的大嘴法则呢?为什么函数体不用加;表示结束? 其实这都是编译器的规定。确实没有什么为什么。要是自己写个编译器可以流行,也可以改一下这个规则。 编译器有宝蓝和ms的,能写一个流行的编译器,确实不容易啊。大家都觉得好,才能被流行形成一个规范。 然后大家就按照这个规范来

    展开全文
  • C语言结束标志分号的作用

    千次阅读 2018-06-16 11:07:06
    众所周知,分号在C语言中的作用是作为一条语句结束的标识,在C程序中如果不小心多写了一个分号可能不会造成什么不良后果:这个分号也许会被视作一个不会产生任何实际效果的空语句。但是如果在if或者while语句后面...

    众所周知,分号在C语言中的作用是作为一条语句结束的标识,在C程序中如果不小心多写了一个分号可能不会造成什么不良后果:这个分号也许会被视作一个不会产生任何实际效果的空语句。但是如果在if或者while语句后面紧跟一条语句时,如果此时在if或者while语句之后多加了一个分号的话,将会产生意想不到的后果。如下所示:

    if(a>b);

    a=b;

    该程序作者的意图本来是当a大于b时,将b的值赋给a,然而由于if语句后多了一个分号,后面的语句a=b就和if语句没有任何关系了,也就是在任何情况下b的值都会赋给a,即使a<b。由此可见当程序中出现多余的分号时,会隐藏不易被发现的错误。与此同时当程序中遗漏一个分号时,同样会招致麻烦,请看下面的示例:

    if(a<3)

    return

    b=c;

    此处return后面遗漏了一个分号;然而这段程序代码仍然会顺利通过编译而不会报错,这是因为在C语言中一句代码的结束标志并不是换行符而是分号;即return和下面一行的b=c;才是一条真正的C语句,其相当于

    if(a<3)

    return b=c;(顺便提一句此时返回的是c的值,而不是有些人认为的1.。。。。。。。。。。。。。)

    相信通过上面的讲解大家对于分号的认识一定相当深刻了。。。

    注:分号标示在C/C++语句结束,多了一个分号“;”、少了一个分号“;”都可能造成不良后果。程序员在程序编写过程中应该小心谨慎,不让这种错误成为程序编写和编译的绊脚石。

    展开全文
  • C语言语句总结 1.空语句 C语言最简单的就是空语句,本身只包含个分号,空语句本身不执行任何任务 2.表达式语句 c并不存在专门的“赋值语句“,那么它的赋值就是种操作,和加法减法一样,在表达式内部进行 x = y...

    C语言语句总结


    1.空语句


    C语言最简单的就是空语句,本身只包含一个分号,空语句本身不执行任何任务


    2.表达式语句


    c并不存在专门的“赋值语句“,那么它的赋值就是一种操作,和加法减法一样,在表达式内部进行

    x = y + 3;
    ch = getchar()


    这实际上是表达式语句,不是赋值语句


    请考虑下面这条语句:

    printf("hello world");


    printf是一个函数,函数将会返回一个值,但是printf函数的返回值(它实际打印的字符数),我们通常并不关心,所谓语句没有效果,只是表达式的值被忽略。


    printf函数所执行的是有用的工作,这类作用称为”副作用“。


    3.代码块


    代码块就是位于一对花括号之内的可选的声明和语句列表

    {
         declatations;
         statements;
    }


    代码块可以用于要求出现语句的地方,它允许你在语法要求只出现一条语句的地方使用多条语句。代码块还允许你把

    数据的声明非常靠近它所使用的地方


    4.if语句

    if(expression)
        statement;
    else 
        statement;


    括号是if语句的一部分,因此必须出现。


    如果expression的值为真,那么就执行第一个statement,否则就跳过它,如果存在else子句,它后面的statement只有当expression为假的时候才会执行


    C并不具备布尔类型,而是用整型代替——0表示假,非0值表示真


    注:else子句从属于最靠近它的不完整的if语句。


    5.while语句

    while(expression)
          statement
    循环的测试在循环体开始执行之前进行,所以如果测试的结果一开始就是假,循环体就不会执行。当循环体需要多条语句来完成任务的时候,可以使用代码块来实现

    5.1break和continue语句

    在while循环中可以使用break语句,用于终止循环,直接结束循环。


    在while循环中可以使用continue语句,用于永久终止当前的那次循环,在执行完continue语句之后,执行流接下来就是重新开始while循环


    在嵌套的循环内部,这两条语句只对最内层的循环起作用 


    5.2while循环示意图



    6.for语句


    C的for语句是while循环的一种极为常用的语句组合形式的简写法,语法如下所示:


    for(experssion1; experssion2; experssion3)
           statement;

    statement语句称为循环体,


    experssion1是初始化部分,它只在循环开始执行时执行一次,


    experssion2语句成为条件部分,它在循环体每次执行前都要执行一次,都像while语句中的表达式一样,


    experssion3成为调整部分,它在循环体每次执行完毕,在条件部分即将执行之前执行。所有三个表达式都是可选的,都可以省略。


    如果省略条件部分,那么表示测试的值始终为真。


    在for语句中也有continue和break语句

     for语句的执行过程


     for语句的执行过程几乎和下面的while循环一摸一样


    experssion1;
    while(experssion2) {
            statement;
            experssion3;
    }

     for语句和while语句执行过程的区别是在于出现continue语句时,在for语句中,循环直接会跳过循环体剩余部分,回到调整部分,在while语句中,如果有调整语句,它也是循环体的一部分,continue语句可能会直接跳过它




    for循环有一个风格上的优势,它把所有用于操作循环的表达式收集在一起,放在同一个地方便于观察寻找,


    当循环体比较庞大时,这个优点更为突出。


    7.do语句


    do语句很像while语句,只是它的测试在循环体之后执行,而不是先于循环体执行,这种循环的循环体至少执行一次,它的语法如下:


    do 
         statements;
    while(experssion)

    如何在while循环和do语句之间进行选择呢?


    当你需要循环体至少执行一次的时候,选择do语句


    8.switch语句


    switch(experssion)
           statement


    尽管switch语句体内只有一条单一的语句是合法的,但实际使用时的switch语句一般如下所示:


    switch(experssion) {
         statement-list
    }


    穿于语句列表之间的是一个或多个case标签,形式如下:


    case constant-experssion:
    
    
    

    每个case标签必须具有一个唯一的值,常量表达式是指在编译期间进行求值的表达式,不能是任何变量。

     

    8.1switch中的break语句


     如果在switch语句执行中遇到了break语句,执行流就会立即跳到语句列表的末尾。


    break语句的实际效果是把语句列表划分为不同的部分;


    在switch语句中,continue语句没有任何效果.


    8.2default子句


    在switch语句中,如果表达式的值与所有的case标签的值都不匹配的话,那么所有的语句都会被跳过,程序并不会终止,也不会提示

    任何错误,因为这种情况在C中并不认为是个错误,所以:


    我们在语句列表中增加一条default子句,写在任何一个case标签可以出现的位置,当switch表达式的值不匹配任何case语句的时候,

    default子句后面的语句就会执行。每个switch语句中只能出现一条default语句.


    9.goto语句


    goto语句语法如下:


    goto 语句标签


    语句标签就是标识符后面加上个冒号,包含这些标签的goto语句可以出现在同一个函数的任意位置

    goto语句是一种危险的语句,因为使用goto语句容易增加代码的复杂性


    但是在一中情况下,即使是结构良好的程序,使用goto语句也非常合适——跳出多层嵌套的循环


    while(condition1) {
         while(condition2) {
               while(condition3) {
                      if(some disaster)
                              goto quit;
               }
         }
    }
    quit:;


    想要在这种情况下避免使用goto语句有两种方法,第一个方案是当你希望退出所有循环时设置一个状态标志,但这个标志必须在每个循环中进行测试


    另一种方案是把所有的循环都放到一个单独的函数里,当你想离开最内层循环的时候,可以使用return语句离开这个函数

    展开全文
  • 摘 要: 在C语言程序设计课程中,break语句有两个作用:是应用于switch语句中,可以结束多分支选择结构;二是应用于循环结构中,可以结束本层循环。通过实例分析出break语句使用的条件,break语句的功能,以及注意...
  • 前言:C语言中的语句由分号隔开,分号即为语句结束标志。语句共有三种逻辑:1,顺序结构,可以形象的理解为一条道顺着走下去。2,选择结构,就是走着走着遇到几个分岔口,然后你选择一下走哪。3,循环结构,就是跑...
  • C语言中分号被作为语句结束标志,如果在C程序中不小心多写了一个分号,那么该分号也许会被视作一个空语句;或者编译器会因为这个多余的分号而产生一条警告信息,根据警告信息的提示往往会很容易找到多余的分号。...
  • 有时我们需要次性执行多sql语句,而用来更新的sql是根据实际情况代码拼出来的解决方案是把sql拼成下面这种形式:begin update TB_VG set seq = 1, vessel_id = Jin14, vessel_type = TRACK where batch_...
  • C语言】分支语句和循环语句一、if 语句1、语句和空语句2、0为假 非0为真3、代码块 {}4、悬空else5、书写规范6、判断个数是否为奇数7、输出1-100的奇数二、switch语句1、switch后跟整型表达式2、break3、default3...
  • C 语句分类C 语言的语句用来向计算机系统发出指令,个实际的源程序通常包含若干条语句,这些语句用来完成一定的操作任务。1.控制语句:(1).if ()…else…;else-if 条件语句(2).switch 多分支选择语句3 .for()...
  •  在这一节中,我们对C语言的各种语句进行分析,相关代码在ucl\stmt.c中。结构体struct astNode是语法树所有结点的父类,而if语句等需要在语法树结点上记录更多的信息,所以在ucl\stmt.h中定义了相关的结构体,我们...
  • 作为一条语句结束标志,在c语言中最重要的便是语句了,通过一条语句的结合,我们才能实现一定的逻辑。 分支语句 if 例:if(条件1){ 语句 } else if(条件2){ 语句 } … else{ 语句 } 注:if else 语句较容易...
  • C语言选择与循环语句

    2021-05-27 08:43:32
    引言: 在现实生活中,做每件事都可以被分解为3种结构,分别是1.顺序结构:自上而下依次执行,如写出个字,要从第笔按一定的笔画一步一步的写...在C语言语句就是以分号作为结束标志 即 ; 作为结束标志 int a =
  • A、C语言和C++语言都是结构化程序设计语言B、C语言和C++语言都是面向对象的程序设计语言CC语言是结构化语言,C++语言是面向对象的语言D、C++语言是结构化语言,C语言是面向对象的语言3、程序设计...
  • 可以行放个表达式形成表达式语句,也可以行放多个表达式形成表达式语句,这时每个表达式后面都必须带“;”号,另外,还可以仅由—个分号“;”占行形成个表达式语句,这种语句称为空语句。 空语句在程序...
  • 四大跳转 :无条件跳转语句 go to;跳出循环语句 break;继续跳出循环语句 continue;返回值语句 return判断语句 if,if else,if else if else if...elseifelse 组合if(0 == x)if(0 == y) error();else{//program code}...
  • C语言循环控制语句

    2011-10-25 20:17:14
    循环控制结构(又称重复结构...C语言提供了while语句、do...while语句和for语句实现循环结构。 3.4.1while语句 while语句是当型循环控制语句,一般形式为: while语句; 语句部分称为循环体,当需要执行多条语句时,
  • 、运算符赋值运算符:=一元运算符:+,正号-,负号!,非~:取补码,如下例子:Paste_Image.pngPaste_Image.png++,自增--,自减算数运算符:+,加法-,减法*,乘法/,除法%,余数逻辑运算符:&&:与&...
  • C语言中由一个分号隔开的就是一条语句 分支语句:if、switch 循环语句:while、for、do while 1、if语句 int main() { int age=20; if(age<18) printf(“未成年\n”); else printf(“成年\n”); return ...
  • 语句C语言程序设计中的基本构件块,每条语句都可看作一条完整的计算机指令,其特点是以分号作为语句结束标志。常见的语句有空语句、表达式语句、循环语句、选择语句、跳转语句等。复合语句也被称为语句块,是指...
  • 说法 源 文件 import 语句 语句 空行 注释 外 语句 行_______语句可用于跳出switch语句: 语句 switch 语句 答案 break智慧职教: 在创建触发器时,( )语句决定了触发器是针对每行执行次,还是针对每语句执行...
  • 隔开的就是一条语句 分支语句(选择结构) if else 如果书写不规范,则else会与最近的可以匹配的if匹配 写判断条件时,(4num)比(num4)更好,更易检查出问题 switch break语句的实际效果是把语句列表划分为不同的...
  • 2、main()----在c语言中称之为“主函数”,c程序有且仅有个main函数,任何c程序总是从main函数开始执行,main函数后面的一对圆括号不能省略。3、被大括号{ }括起来的内容称为main函数的函数体,这部分内.....
  • c语言中if语句知识点总结If语句知识点总结if语句的三种基本形式(1)if (表达式)语句;例:if(x>y) printf(“%d”,x);(2)if(表达式) 语句1;else语句2;例:if (x>y) printf(“%d”,x);else printf(“%d”,y);(3)if...
  • C语言中输入输出和循环语句详解C语言的输入输和循环分支语句详解 本章主要向大家介绍下C语言的输入和输出功能以及循环分支语句的使用 第4章 顺序结构程序设计 3.1 C语言语句 3.2 赋值语句 3.3 单个字符的输入/输出...
  • 第四章 C语言三大语句注意事项

    千次阅读 多人点赞 2021-04-13 00:51:31
    )隔开的就是一条语句。 很好理解,如: int a=3;//语句1 printf("请大家多多指教!");//语句2 ;//语句3----空语句 今天讲解的内容,则是自己对于这三种语句一些细节的介绍。(并不是具体讲解这些语句) 分支...
  • //EOF end of file 文件结束标志 本质上为 -1 while ((ch = getchar()) != EOF) //输入函数getchar() 键盘输入字符 输入 ctrl + z 结束 //int ch = putchar();//输出函数 putchar() { putchar(ch); //显示打印ch的...
  • C语言数据类型与语句前言--C语言特点、关键字1.1 数据类型相关的关键字————用于定义变量或者类型类型变量名:测试1.1 存储相关关键字1.1 控制语句相关的关键字1.1 其他关键字1.1 基本类型1.1 构造类型1.1 变量...
  • C语言入门(六)表达式和语句

    千次阅读 2016-07-11 15:31:52
    表达式和语句  、表达式 前面已经提到过表达式,相信大家对表达式也...),C语言中所有的语句和声明都是分号结束,在分号出现之前,语句是不完整的。 例如: 1+2; Counter/3+5; Height*Width; 表达

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 53,354
精华内容 21,341
关键字:

一条c语句结束标志用