精华内容
下载资源
问答
  • while(...){...} do{}while();
    while(...){...}
    
    do{...}while(...);
    
    展开全文
  • do ...} while (0) TSfree(url); 这个TSFree 正好是个宏,然后编译就提示错误: error: expected ‘;’ before ‘_TSfree’ #define TSfree(p) _TSfree(p) ^xyzabc.cc:212:2: not...
    do
    {
        //do something  
    } while (0)
    
    TSfree(url);

    这个TSFree 正好是个宏,然后编译就提示错误:

    error: expected ‘;’ before ‘_TSfree’
     #define TSfree(p) _TSfree(p)
                       ^xyzabc.cc:212:2: note: in expansion of macro ‘TSfree’
      TSfree(url);
      ^

    分析N久才发现,原来 do while 后面要加分号。

    C 语言用了这么多年,还真是没有注意过这个细节。

    转载于:https://www.cnblogs.com/elodio/p/4818434.html

    展开全文
  • 正点原子8266无线模块代码理解———while循环直接加分号 菜鸡理解,欢迎指错 最近,在学习正点原子stm32开发板的时候,根据自己的需要修改了8266无线模块的例程,遇到程序死循环的错误,在检查代码的时候,注意到...

    正点原子8266无线模块代码理解———while循环后直接加分号

    菜鸡理解,欢迎指错

    最近,在学习正点原子stm32开发板的时候,根据自己的需要修改了8266无线模块的例程,遇到程序死循环的错误,在检查代码的时候,注意到到这样一句代码。

    while(atk_8266_send_cmd("AT","OK",20));
    

    括号中的函数(atk_8266_send_cmd(“AT”,“OK”,20),通过串口向8266发送指令 AT ,通过是否接收到 OK 来判断8266无线模块硬件是否连接,连接成功函数返回0,失败则返回1.
    但是我注意到这个while循环后面直接带有一个分号“;”,通过查阅资料,有了如下理解。

    在以下的一段非常简单的代码中

    while(a<10{a++}
    

    注意,这里的while是没有分号的,这段循环的意思是判断a是否小于10,如果是,就进入循环,直到a不小于10时,跳出循环。

    再看之前的一段代码

    while(atk_8266_send_cmd("AT","OK",20));
    

    此时,while后面直接加了分号,这同样是一个循环,意思是,判断括号里面的函数是否为真,即函数返回值是否为1,如果为1,则继续执行里面的函数,直到函数返回值为0,跳出循环。
    所以导致8266模块如果没有正确连接的话,这条代码的意思是不断的检测连接状态,导致程序进入死循环。

    总结,要时刻注意while语句后面有没有加分号。

    展开全文
  • 遇到while语句后面不接内容直接加分号的是什么意思? 例如while ((*s++ = *t++) != '\0'); <p>for (; *s != '\0'; s++);</p>
  • while结尾不加分号,造成返回值出现问题,按键按下反应出现问题 按键按下,灯不发生反转,需要加个延时 while(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON) ;;;;;;;;;;;;;;;;分号 uint8_t ...

    认真警告,拒绝眼瞎

    while结尾不加分号,造成返回值出现问题,按键按下反应出现问题
    按键按下后,灯不发生反转,需要加个延时

    while(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON) ;;;;;;;;;;;;;;;;分号
    

    uint8_t KEY_Scan(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

    {

    if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON)
    {
    	while(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY_ON); //while结尾处分号
    		return KEY_ON;	
    }
    else 
    {
    	return KEY_OFF;
    }
    

    }

    在这里我们定义了一个 Key_Scan 函数用于扫描按键状态。 GPIO 引脚的输入电平可通
    过 读 取 IDR 寄 存 器 对 应 的 数 据 位 来 感 知 , 而 STM32 标 准 库 提 供 了 库 函 数
    GPIO_ReadInputDataBit 来获取位状态,该函数输入 GPIO 端口及引脚号,函数返回该引脚
    的电平状态,高电平返回 1,低电平返回 0。 Key_Scan 函数中以 GPIO_ReadInputDataBit 的
    返回值与自定义的宏“KEY_ON”对比,若检测到按键按下,则使用 while循环持续检测按
    键状态,直到按键释放,按键释放后 Key_Scan 函数返回一个“KEY_ON”值;若没有检测
    到按键按下,则函数直接返回“KEY_OFF”。若按键的硬件没有做消抖处理,需要在这个
    Key_Scan 函数中做软件滤波,防止波纹抖动引起误触发。

    展开全文
  • Java语言为什么if语句后面一般不要加分号,而while就需要?不是说都是循环的意思么
  • ![图片说明]... ... while ((c = getchar()) != '\n') { if (c == 32) { continue; } else { ch = c; } printf("%d", ch-48); } } ``` 求大神解答
  • 1.while是先判断条件,循环,例: while(条件)//这个后面不用加分号 { 执行过程 ...注:在if语句,while语句中,表达式后面都不能加分号,而在do-while语句的表达式后面,则必须加分 ...
  • while()与while();关系

    2016-03-11 08:32:18
    想问一下while()与while()后面加分号的区别,也就是 while()和while(); 当然,()中是有包含东西的。
  • do ...while() 结尾要;的问题

    千次阅读 2013-07-11 23:01:10
    第一种情况下while和()还有后面的{}是一个整体循环,你可以把它们整体看成一个语句,而因为"}"本身就是一种结束符号,所以后面不用再加分号来证明语句结束.第二种情况下do和{}还有后面的while()构成了另外一种循环体,...
  • 可以没有{},此时于while()第一个分号 “;” 前面的语句就是循环体。 可以同时有{}和分号“;” , 也就是说,当有花括号 {} 结尾可不需要分号, 当然你了不也会出错,但不要while(); 【总结】在C语言中,用;...
  • C语言回顾笔记——备忘录 ...),循环体和do while又组成个整体,所有while()也要加分号 ; 才结束。 2、while() { 循环体 } 循环体中的最后一个语句的分号 ; 即是该语句的结束标志,也是这个wh...
  • java学习笔记--第三天

    2012-03-08 15:05:41
    01.语句(while) while(条件表达式) { 执行语句; } 定义一个初始化表达式; while(条件表达式) { 循环体(执行语句); } 02.语句(do-while) ...(千万不能在while后加分号
  • 基本格式是 include<stdio.h> int main(void){ do{ A; B; } while(条件); } 易错点 没有写主函数 主函数后面没有加花括号 while后面没有加分号
  • &lt;?...符号"... // 功能执行语句,后面必须加分号 echo "aaaaaaaaa"; $a = 100; // 结构定义语句,后面不一定不要加分号 if(true){ } while(true){ } class demo{ } fu...
  • 3个while循环

    2017-08-30 22:42:02
    近期在写代码的时候,由于给while循环后面忘记加分号了,因此差不多写成了如下的形式: while(表达式) while(表达式) while(1) { 运行一些任务 }然后由于第一个表达式不成立,就直接跳过了下面的两个while循环...
  • While循环语句的格式 while(循环条件){ ...注意:循环条件后面不能加分号,不然程序会进入死循环 编写个1加到5的案例 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20181101194710757.png?x...
  • if或while语句块内如果只有一条语句,那么可以省略大括号的书写,然而,当他们的条件判断框后面不小心了一个”;”时,会使本来想要在if或while条件成立时执行的语句替换成了一个空语句,把原来要执行的语句“挤到...
  • do...while(0)妙用

    2020-03-13 19:45:20
    //不符合编程习惯————通常语句后加分号 else .... 当然,如果上述语句不加分号,是不会出现问题的。用do…while(0)的好处是可以将加分号贯彻到底。 #define p do{A;B;}while(0) 2、处理错误时...
  • JS—do...while循环

    2019-09-15 21:21:31
    1、while后面的分号不能忘记写。 2、循环条件中使用的变量需要经过初始化。 3、循环体中,应有结束循环的条件,否则会造成死循环。 例:打印出1到100的和 var i = 0; var num = 0; do{ num = num + i; i++; ...
  • do-while循环

    2015-10-17 21:26:45
    do-while的语法:    do{    循环体; ... }while(表达式);... 注意:while的小括号后面一定要加分号    语义:  1.执行循环体,跳转到2  2.判断表达式的结果是否为真,如果为真,跳转到1,
  • while语句没有花括号用法

    千次阅读 2020-05-09 18:00:26
    今天看代码遇到while语句没有花括号,且括号直接分号。例:while(*****); 一时之间不知道什么意思,搜索了也觉得一知半解,在虚拟机敲试了下,发现了个用法。 有两种情况。 1、while里面对变量值的判断,...
  • 1.注意while语句不需要加分号,加了会出现运行中,光标只是向下运行一次,就不再动了,知识Ctrl+c停止运行。 2.在运行循环语句时,数据在无线运行,可以Ctrl+c,停止运行。 ...
  • 1、在循环的时候,不要再循环括号后面加分号,会导致
  • do-while的语法

    2015-10-31 18:35:51
    do -while的语法:    do{  循环体;  }while(表达式);  注意:while的小括号后面一定要加分号    语义:  1.执行循环体,跳转到2
  • linux c/c++ while();进入死循环

    千次阅读 2012-06-07 21:50:01
    while(); 后面分号表示循环一个空语句, 所以进入了死循环
  • while语句 代码清单4-5

    2018-08-18 18:06:02
    #include &lt;stdio.h&gt; int main() { int no; printf("请输入一个正整数: \n"... while (no &...=0和while后面加大括号 ... //这里不是no-- , 记得加分号 no--; //错...
  • do{} while(0)的用处

    2012-06-04 12:43:24
    1、可以作为goto的替代, do {  if(...) break;相当于直接goto到循环外的...2、可以作为宏定义中的语句,契合程序员在每句代码后加分号结尾的习惯 #define FUN() \ do \ { \ 语句体 } \ while(0) \

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 153
精华内容 61
关键字:

while后加分号