精华内容
下载资源
问答
  • c语言while(1)和while(0)

    千次阅读 2018-12-26 19:57:00
    while(1)是一个无限循环,一直运行,直到明确发出break等跳出循环的语句才会终止。 while(1),while(2),while(-255),效果都是无限循环 ...while(0)与while(1)相反,条件始终为false,在while中的代码永远不会被...

    while(1)是一个无限循环,一直运行,直到明确发出break等跳出循环的语句才会终止。

    while(1),while(2),while(-255),效果都是无限循环

    while(1)或while(任何非零整数)

    {

       //循环无限运行

    }

    while(1)可以在条件始终为真的地方使用

    while(0)与while(1)相反,条件始终为false,在while中的代码永远不会被运行

    while(0)

    {

        //循环不运行

    }

    while(i--)其中i是一个变量,i--是先取值后减,--i是先减后取值

    单片机中while(1)的用途:

     while(1):这是一个死循环,一直在while里循环

    1.调试代码时,为了检测一部分代码是否OK,可加测试点while(1),测试这段代码

    2.单片机使用while(1),大部分是为了防止程序跑飞(比如些了5000行代码,要执行的是某一部分代码,然而却跑去别的代码行了--跑飞),加上while(1)可以让程序执行完后在原地循环

    3.最刻不容缓,时间紧急的放中断,按照顺序结构依次在中断排列下来,快件----普通件,不紧急的放while里,分清孰轻孰重,任务分配 

    转载于:https://www.cnblogs.com/296389183yy/p/10181335.html

    展开全文
  • do while(0)的妙用

    万次阅读 2019-02-01 18:14:07
    do while(0)的妙用 do while(0);就如同一个花括号,具有独立的作用域,花括号所表示的符合语句是一个整体,do while(); 语句同样是一个整体,同样可以在if 等条件语句后直接使用。但是后所不同的是,do while(); ...

    do while(0)的妙用

    do while(0);就如同一个花括号,具有独立的作用域,花括号所表示的符合语句是一个整体,do while(); 语句同样是一个整体,同样可以在if 等条件语句后直接使用。但是后所不同的是,do while(); 作为循环语句还可以使用break 跳出循环,程序执行流也就随之来到了do while(0);的下一条语句。下面就来介绍 do while(0);的三条妙用。

    妙用1: do while(0); 可以用来代替goto语句,在需要使用goto的地方直接break。

    妙用2: do while(0); 可以使用在复杂的宏函数中,如下代码就不太完备:

    #define FUNCTION() {func(); func();}

    当我们在调用这个宏函数时,就会在大括号的末尾多出一个分号。

    {func(); func();};

    虽然可以将分号作为一条空语句来理解,但是遇到更加复杂的宏定义时就会无济于事,所以我们在这里需要用到do while(0);

    #define FUNCTION() do{func(); func();} while(0)

    这样,我们最后添加的分号就成了do while语句的结束标致,而不是一个空语句了。 

    妙用3:避免由宏引起的警告。

    定义空宏的时候有些编译器会给出警告,这是可以使用do while(0)。

    展开全文
  • while(0),while(1),while(表达式)

    千次阅读 2016-10-30 22:11:48
    while(0)表示不执行循环语句,while(1)表示执行语句。 while(0) while('\0') while(a='\0') 上面三种情况等价,因为他们的值都是0。特别是对于while(a='\0'),while判断的是表达式赋值之后a的值...
    while(0)表示不执行循环语句,while(1)表示执行语句。

    while0
    while'\0'
    whilea='\0'
    上面三种情况等价,因为他们的值都是0。特别是对于whilea='\0'),while判断的是表达式赋值之后a的值,并不是说赋值成功后返回值为1。if也是同理。
    if(a='\0')表示条件不成立,不执行条件语句。
    ab为字符串数组,将b的字符串复制到a中,语句如下:
    while((a++=b++!='\0'
    while((a++=b++!=0
    只要a被赋值完后的值不为0,就能够一直循环执行。
    展开全文
  • 深度理解do{} while(0)语句的作用

    万次阅读 多人点赞 2018-08-21 11:25:11
    在linux内核中常常会看到do{} while(0)这样的语句,有人疑惑,认为无意义,因为他只执行一次,加不加do{} while(0)小过失完全一样的,那你就错了,没有完全了解do{} while(0)。下面看一个例子: 定义一个宏: #...

                                                 深度理解do{} while(0)

     

    在linux内核中常常会看到do{} while(0)这样的语句,有人疑惑,认为无意义,因为他只执行一次,加不加do{} while(0)小过失完全一样的,那你就错了,没有完全了解do{} while(0)。下面看一个例子:

    定义一个宏:

    #define SAFE_FREE(p)  do{free(p); p=NULL}  while(0)

    假设这里去掉do{....} while(0),及定义为:

    #define SAFE_FREE(p)  free(p); p=NULL;

    那么一下代码

    If(NULL!=p)
    
       SAFE_FREE(p)
    
    else
    
       .......

    会被展开成:

    If(NULL!=p)
    
       free(p); p=NULL;
    
    else
    
       .......

     

    展开存在两个问题:

    1. 因为if分支后面有两个语句,导致else分支没有对应的if,编译失败。
    2. 假设没有else分支,则SAFE_FREE中的第二个语句无论if测试是否通过,都会执行。

    如何解决以上问题呢?

    有人说给SAFE_FREE的定义加上{}就可以解决上述问题了,即:

    #define SAFE_FREE(p)  { free(p); p=NULL; }
    
    代码展开如下:
    
    If(NULL!=p)
    
       { free(p); p=NULL; }
    
    else
    
       .......

     

    但是,在C程序中,每个语句后面加分号是一种约定俗成的习惯,那么代码如下:

    If(NULL!=p)
    
       { free(p); p=NULL; };
    
    else
    
       .......

     

    问题又来了,这样else又没有对应的if了,编译还是失败。假设用了do{} while(0)就可以解决上面的一系列问题了,代码如下:

    If(NULL!=p)
    
      do { free(p); p=NULL; } while(0);
    
    else
    
       .......

    所以do {} while(0)的使用时为了保证宏定义的使用者能无编译错误的用宏。

     

     

     

     

    展开全文
  • do{}while(0)用法

    千次阅读 2019-05-29 21:47:34
    }while(0) 这样的代码一看就不是一个循环,do..while表面上在这里一点意义都没有,那么为什么要这么用呢? 实际上,do{...}while(0)的作用远大于美化你的代码。查了些资料,总结起来这样写主要有以下几点好处: 1...
  • do { }while(0)的妙用

    千次阅读 2018-06-30 17:48:30
    #define FUNC do{}while(0)2.避免出现歧义代码#define FUN1(x) x=1;x++; if(...) FUNC1(); else FUNC2(); 上面的宏展开后就成了下面这样,很明显和写代码时的语义不符。if(...) x=1;x++; else FUNC2(...
  • do{...}while(0);的好处

    千次阅读 2019-05-22 11:22:16
    最近阅读libevent源码时,会看到有很多宏定义中使用了do{...}while(0);,看了看一些资料,发现很多源码也会这么写,那么do{...}while(0);的好处是什么呢?这里说一下常见的两种用法: 保证宏定义的正确使用 举个...
  • do{...}while(0)的用法,超详解

    千次阅读 多人点赞 2019-01-17 10:36:56
    转载原文地址:... 零.导引 第一次见到 do{...}while(0)是在学习libevent的时候,看到里面有很多类似 #define TT_URI(want) do { \ char *ret = evhttp_uri_join(uri, url_tmp, sizeof(...
  • C语言do...while(0)使用小结

    千次阅读 2018-05-02 16:17:08
    在一些C语言程序中我们会看到do...while(0);这样的语句,这样的用法貌似画蛇添足,实际却颇有妙用。单独来看,do…while(0)和顺序执行`...部分的代码的效果并无二致,然而在如下两种情况下的效果却十分巧妙。 一.宏...
  • #define 和 do{...}while(0) 的妙用

    千次阅读 2019-01-29 11:05:04
    @[TOC](#define 和 do{…}while(0) 的妙用) 最近在阅读公司代码的时候发现宏定义 #define 后面的语句都是被 do{…}while(0); 圈起来的。作为一个还没毕业的实习生,对此很是不解。 正确认识宏定义#define #define...
  • do{...}while(0)的用法

    万次阅读 多人点赞 2015-04-24 16:26:17
    do{...}while(0) 的妙用 1.导引: 第一次见到 do{...}while(0)是在学习libevent的时候,看到里面有很多类似 #define TT_URI(want) do { \ char *ret = evhttp_uri_join(uri, url_tmp, sizeof(url_tmp)); \ ...
  • do...while(0)的用法

    千次阅读 2016-09-14 10:42:55
    do...while(0)用法简介
  • do{...}while(0)的意义和用法

    千次阅读 2017-02-03 11:51:49
    }while(0)这样的代码一看就不是一个循环,do..while表面上在这里一点意义都没有,那么为什么要这么用呢?实际上,do{...}while(0)的作用远大于美化你的代码。查了些资料,总结起来这样写主要有以下几点好处:1、辅助...
  • C语言中do{...}while(0)的秒用

    千次阅读 2018-03-22 13:19:59
    今天看了些有关do{...}while(0)秒用的文章,觉得写的很好,这里总结下分享给大家。这里分享的有3个用法,分别是:1.避免空的宏定义在编译时出现warning。2.多个语句一起,定义成一个宏时,增加代码适应(特别是条件...
  • C语言在linux内核中do while(0)妙用之法

    千次阅读 2016-02-23 21:03:11
    为什么说do while(0) 妙?因为它的确就是妙,而且在linux内核中实现是相当的妙,我们来看看内核中的相关代码: #define db_error(fmt, ...) \ do { \ fprintf(stderr, "(error): "); \ fprintf(stderr,...
  • C语言 -- do{…}while(0)的意义和用法

    千次阅读 2018-03-08 11:51:50
    }while(0)这样的代码一看就不是一个循环,do..while表面上在这里一点意义都没有,那么为什么要这么用呢?实际上,do{...}while(0)的作用远大于美化你的代码。查了些资料,总结起来这样写主要有以下几点好处:1、辅助...
  • 关于宏定义中的do-while(0)循环

    千次阅读 2016-08-09 16:52:53
    在宏定义里面经常看到do{...}while(0)这样的语句。 确实很让人疑惑,do while(0)就是让代码只执行一次,何必这样呢,为什么需要用do while呢。 其实,宏定义就是一个代码替换的过程。 #define CODE_SEG(a) ...
  • 宏定义中使用do{}while(0)的好处

    千次阅读 2016-07-04 10:39:14
    宏定义中使用do{}while(0)的好处 #define MACRO_NAME(para) do{macro content}while(0)   的格式,总结了以下几个原因:   1,空的宏定义避免warning: #define foo() do{}while(0) 2,存在一个...
  • C语言中do...while(0)的妙用

    千次阅读 2016-10-21 10:24:23
    在linux内核代码中,经常看到do...while(0)的宏,do...while(0)有很多作用,下面举出几个: 1、避免goto语句: 通常,如果一个函数开始要分配一些资源,然后如果在中途遇到错误则要退出函数,当然,退出前要释放...
  • #define+do{} while(0)+peeror的思考

    千次阅读 2016-02-24 09:00:34
    今天看到这样一个程序,#define ERR_EXIT(m) do { perror(m);...} while(0) 1. #define 与do{}while()函数的特殊结合 2. perror函数 3. exit函数以及EXIT_TAIURE 关于宏中使用do-while函数 1.一般我们都知道
  • }while(0) 该代码片段并非循环,这样想想似乎使用do…while没有任何意义,那么为什么还要使用它呢? 实际上,do{...}while(0)的用途并不仅仅是优化你的代码。经过一系列的调研和探索,我们总结出它的一些用途如下。 ...
  • do{}while(0)和switch中嵌套while 整理

    千次阅读 2014-04-15 21:11:40
    1,空的宏定义避免warning: #define f() do{}while(0)  2,switch中嵌套while 例如: #include "stdio.h" int main() { int num; scanf("%d",&num); switch(num)  { default: while (1)  {  
  • do{}while(0)的妙用

    千次阅读 2015-01-05 12:36:33
    其实关注do{}while(0)的用法还是一次偶然的机会 当时还在实习,连个工作都找不到,面试的时候有个面试题。 请问do{}while(0)这样写有什么作用? 我当时想这有什么作用,就是里面的代码块执行一遍就是了呗,费劲,...
  • 使用do{ } while(0)的好处

    万次阅读 多人点赞 2013-02-01 11:08:09
    看到过一些程序中或者宏中使用do{} while (0)觉得挺奇怪,不知道为什么这么写,就百度了一下... 看到一个比较好的帖子,给大家分享下! 我遇见的宏 ... } while(0) _Api() { do { //do somethi
  • C/C++宏定义中的do{...} while(0)

    千次阅读 2016-08-25 11:25:44
    C/C++宏定义中do{…} while(0)的用途 今天在pthread_create()的manual中看到了一个#define的函数中使用了do {...} while(0),困惑须臾后通过网络解惑,分享如下:
  • do{}while(0)在宏定义中作用

    千次阅读 2014-11-20 20:03:26
    在宏定义中,为什么使用do{}while(0)
  • linux内核中 do{}while(0)用法分析

    千次阅读 2013-08-13 15:00:37
    在Linux内核中,经常会看到do{}while(0)这样的语句,许多人开始都会疑惑, 认为do{}while(0)毫无意义,因为它只会执行一次,加不加do{}while(0)效果是完全一 样的,其实do{}while(0)主要用于宏定义中。  这里用...
  • Cocos2d-x中关于do{} while(0) 的解释

    千次阅读 2013-06-29 09:46:08
    Cocos2d-x中关于do{} while(0) 的解释 本文给Cocos2d-x的初学者解释一下do{} while(0) 的用处! 其意义在于:能够实现复杂的定义,通用性强,任何情况下都适用。 #define CC_BREAK_IF(cond) ...
  • 宏定义中的do{ }while(0)

    千次阅读 2013-04-07 12:22:20
    无论是Linux内核还是其他著名的c、c++库里都能见到 do{} while (0)  这样的写法看似没有意义,其实出自名家之手,是在宏定义里使用的  以前就了解到在程序里使用宏定义的函数后面...} while(0)  如果去掉了
  • do{}while(0) 的作用

    千次阅读 2011-04-26 11:07:00
    do{}while(0) do{}while(false) do{}while(__LINE__==-1) 1.用在出错处理中,替代goto //使用goto bool Func() { bool ret = true; ret=Func1(); if(!ret) goto err; ret=Func2(); if(!ret) goto ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 244,891
精华内容 97,956
关键字:

while(0)