精华内容
下载资源
问答
  • C++ do while 0 的用法和意义

    千次阅读 2014-07-18 14:37:46
    do while 0 的用法和意义 */ //最近在很多代码里都看到do while 0的身影。乍一看,这不是没有做任何事情吗?为什么还要这样写。难道这是多此一举的吗?当然不是。 //1.0 辅助定义复杂的宏,避免引用的时候...



        /*
            do while 0 的用法和意义
         */
        
        //最近在很多代码里都看到do while 0的身影。乍一看,这不是没有做任何事情吗?为什么还要这样写。难道这是多此一举的吗?当然不是。
        
        //1.0 辅助定义复杂的宏,避免引用的时候出错:
        
        //假设要定义一个这样的宏
    #define DOSOMETHING() \
    func1();\
    func2();
        //调用
        int a = 3;
        if(a > 3)
            DOSOMETHING()
        //展开其实是这样的
            if (a > 3)
                func1();
        func2();// 不管怎样fun2都要执行了
        
        //如果包裹起来,展开的时候就应该是这样
        if(a > 3)
            //两个函数都能被执行到
            do{
                func1();
                func2();
            }while (0);
        
        
        //2.0避免使用goto对程序流进行统一的控制:
        do
        {
            int *i = new int();
            if(i = func1()){break;}
            if(i = func2()){break;}
        }while(0);
        
        //3.0避免空宏引起的warning
        //内核中由于不同架构的限制,很多时候会用到空宏,在编译的时候,空宏会给出warning,为了避免这样的warning,就可以使用do{}while(0)来定义空宏:
        #define EMPTYMICRO do{}while(0)










    展开全文
  • DoWhile0--华硕笔试题

    千次阅读 2011-10-17 20:54:32
    华硕2012校招碰到的一道题,之前在实验室讨论过,关于Linux内核里很多的宏定义都是用do{}while(0)写的,讨论没那么深入,刚好http://kernelnewbies.org/FAQ/DoWhile0这里有个总结,转过来。 Why do a lot of #

    华硕2012校招碰到的一道题,之前在实验室讨论过,关于Linux内核里很多的宏定义都是用do{}while(0)写的,讨论没那么深入,刚好http://kernelnewbies.org/FAQ/DoWhile0这里有个总结,转过来。

    Why do a lot of #defines in the kernel use do { ... } while(0)?

    There are a couple of reasons:

    • (from Dave Miller) Empty statements give a warning from the compiler so this is why you see #define FOO do { } while(0).

      空的宏定义,编译器会给warning。

    • (from Dave Miller) It gives you a basic block in which to declare local variables.

      代码块,可以声明局部变量。

    • (from Ben Collins) It allows you to use more complex macros in conditional code. 

      在有条件判断的地方可以应用稍微复杂点的宏定义。

      Imagine a macro of several lines of code like:

      #define FOO(x) \
              printf("arg is %s\n", x); \
              do_something_useful(x);
      

      Now imagine using it like:

      if (blah == 2)
              FOO(blah);
      

      This interprets to:

      if (blah == 2)
              printf("arg is %s\n", blah);
              do_something_useful(blah);;
      

      As you can see, the if then only encompasses the printf(), and the do_something_useful() call is unconditional (not within the scope of the if), like you wanted it. So, by using a block like do { ... } while(0), you would get this:

      if (blah == 2)
              do {
                      printf("arg is %s\n", blah);
                      do_something_useful(blah);
              } while (0);
      

      Which is exactly what you want.

    • (from Per Persson)  多个语句时候 分号 也可能引发错误

      As both Miller and Collins point out, you want a block statement so you can have several lines of code and declare local variables. But then the natural thing would be to just use for example:

      #define exch(x,y) { int tmp; tmp=x; x=y; y=tmp; }
      

      However that wouldn't work in some cases. The following code is meant to be an if-statement with two branches:

      if (x > y)
              exch(x,y);          // Branch 1
      else  
              do_something();     // Branch 2
      

      But it would be interpreted as an if-statement with only one branch:

      if (x > y) {                // Single-branch if-statement!!!
              int tmp;            // The one and only branch consists
              tmp = x;            // of the block.
              x = y;
              y = tmp;
      }
      ;                           // empty statement
      else                        // ERROR!!! "parse error before else"
              do_something();
      

      The problem is the semi-colon (;) coming directly after the block. The solution for this is to sandwich the block between do and while (0). Then we have a single statement with the capabilities of a block, but not considered as being a block statement by the compiler. Our if-statement now becomes:

      if (x > y)
              do {
                      int tmp;
                      tmp = x;
                      x = y;
                      y = tmp;
              } while(0);
      else
              do_something();
      
    • (from Bart Trojanowski) gcc adds Statement-Expressions which provide an alternative to the do-while-0 block. They provide the above mentioned benefits and are slightly more legible.

      #define FOO(arg) ({         \
                 typeof(arg) lcl; \
                 lcl = bar(arg);  \
                 lcl;             \
          })
      


    展开全文
  • whiledo while语句

    万次阅读 多人点赞 2019-07-16 21:48:39
    编写程序时,许多问题都要用到循环控制。循环结构也是结构化程序...While 及dowhile语句 While语句和do while语句都是C语言中循环结构的一种实现方式。While语句实现当型循环结构;do while语句较while语句在执行和...

    编写程序时,许多问题都要用到循环控制。循环结构也是结构化程序设计的基本结构之一,因此熟练地掌握循环结构是程序设计最基本的要求。While循环、do while循环、for循环语句,3种循环语句在一般情况下可以相互转换

    While 及dowhile语句

    While语句和do while语句都是C语言中循环结构的一种实现方式。While语句实现当型循环结构;do while语句较while语句在执行和判断的顺序上有所不同

    1.while语句
    一般形式如下:
    While(表达式)语句
    其语义是当表达式的值为真(非0时),执行while语句中的内嵌语句。该语句的特点是先判断表达式,后执行语句。L流程图如下
    在这里插入图片描述
    While语句中的表达式一般是关系表达式或逻辑表达式,只要表达式的值为真(非0)即可继续循环
    循环体中如果包含一条以上的语句,应该用大括号括起来,以复合语句的形式出现。如果不加大括号,则while语句的范围直到while后面的第一个分号处
    在循环中应有使循环趋向于结束的语句,以避免死循环

    例子
    编程计算s=1+1/2+1/3+…1/n
    首先找规律,可以看到这样的式子,分子不变,分母加一,第一项是1,第二项是2,第三项是3,第n项是n
    在这里插入图片描述

    编程实现

    在这里插入图片描述

    从键盘中输入一个数n,求n!

    在这里插入图片描述

    整体加一个while循环
    在这里插入图片描述

    do while循环语句
    一般形式如下
    do
    循环体语句
    While(表达式)

    其语意是:
    先执行一次指定的循环体语句,然后判别表达式,当表达式的值为真(非0)时,返回重新执行循环体语句,如此反复,直到表达式的值等于0为止,此时循环结束。其特点是:先执行循环体,然后判断循环条件是否成立

    流程图
    在这里插入图片描述
    将第一个多项式求和用do while来实现

    在这里插入图片描述

    一般情况下While 和 do while 语句处理一个问题得出的结果往往是相同的,但是两者终归是不一样的,在处理某些特定问题得出的结果也会有所不同,就拿求和的例子来说吧

    求1到100的自然数和用while
    在这里插入图片描述

    用 do while

    在这里插入图片描述

    While循环一次也不执行
    比如一个数加它自身
    用while实现如下
    在这里插入图片描述

    用do while 语句编程
    在这里插入图片描述

    总结 while循环先判断再循环,do while 先执行循环体再判断,while可以一次都不执行,do while 循环至少执行一次循环

    展开全文
  • for,while,do while区别

    2016-10-31 16:22:25
    简单的理解for,while,do while的区别
  • 实现while和dowhile控制.go
  • do while语句

    万次阅读 2018-07-27 00:56:58
    今天写一下 while, do while语句; 先讲一下while语句 while语句是先判断在执行 do while语句是先执行一次在判断 记住是一次; 基本结构 while语句; while(布尔类型的表达式){ 布尔类型是判断条件 ...

    今天写一下  while,     do while语句;

    先讲一下while语句    while语句是先判断在执行     do while语句是先执行一次在判断   记住是一次;

    基本结构

    while语句;

    while(布尔类型的表达式){          布尔类型是判断条件  正确或者错误

    输入的内容

    }

    do  while语句;

    do{

    输入的内容

    }while(布尔类型的表达式);  

    下面举一个例子

    这里自己输入要打印多少份资料,  sz就是我们输入的值   定义一个初值ss等于0    ss++ 初值在不断增大 直到不满足ss<sz这个条件的时候程序才会截止             这个就是while类型的基本用法

    举一个do  while类型的例子;

    这里在do{ 这里}里面输入判断语句和输出语句    他先问我们合格了吗   if 如果我们输入不合格  等于While语句中定义的sz时   程序就循环   当我们输入合格的时候(就是只要不输入不合格其他的都行),程序停止运行  退出程序  结束运行。

     

     

     

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

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

    千次阅读 2017-08-02 20:57:40
    while循环的基本结构 while(条件){ //循环体 } 在while循环中的小括号中,是一个条件判断,当条件判断的结果是true的时候才会进行循环体中...do while循环的基本结构 do{ //循环体 }while(条件); 与while不同的
  • do while 循环和while循环的区别

    万次阅读 多人点赞 2014-07-20 00:53:18
    do while 循环和while循环的区别 1、do while循环是先执行循环体,然后判断循环条件,如果为真,则执行下一步循环,否则终止循环;  while循环是先判断循环条件,如果条件为真则执行循环体; 2、do ...
  • Dowhile循环练习

    2014-03-25 12:07:17
    Dowhile循环练习
  • Java while循环与dowhile循环

    千次阅读 2019-04-25 23:53:45
    Java while循环与dowhile循环1.while循环2.do...while循环 1.while循环 语法 while(表达式){ 循环体 } 循环三要素1.变量初始化 2.循环条件的判断 3.计数器的累加(朝着跳出循环移动) 例子 class Demo7{ /**打印1...
  • (十)whiledo while的区别

    千次阅读 2015-12-01 16:17:04
    do while的语法是 do{执行函数}while(条件判断) 假如 用do while的时候 int i = -1; do { cout = 0); 显示结果是-1。 用while的时候 int i = -1; while (i >= 0){ cout 是没有显示结果的。 ...
  • whiledo while的使用及区别

    万次阅读 多人点赞 2018-11-30 10:43:19
    使用 首先介绍while的使用,基本模式 while(循环条件){ ... int i = 0; while (i &amp;amp;lt; 5) { i ++; Log.e(TAG, &amp;quot;i = &amp;quot; + i); } } 输出结果 i
  • JavaScript whiledo while for 循环语句

    千次阅读 2017-07-28 18:32:18
    本文主要介绍了JavaScript(js)中whiledo while 、for 循环的介绍以及用法
  • do whilewhile的区别

    千次阅读 2017-11-05 19:45:22
    一.do-while语句 do-while语句的语法: do{  statement }while(expression);   看下面示例: var i=10; do{  i+=2; }while(i alert(i) // 12 (允许你吃了,就给了你两...
  • whiledo-while的使用

    2014-07-10 10:04:48
    whiledo-while的使用以及区别
  • C语言:whiledo while循环语句

    万次阅读 多人点赞 2019-05-05 23:55:29
    while 执行流程:先判断循环控制表达式 Exp_cntrl 的值,当该表达式的值为逻辑真(非 0)时,会一直执行循环体,直到表达式的值为逻辑假(0)才结束循环。 通常把循环控制表达式 ExP_cntrl 中含有的变量,称为...
  • 使用whiledo while循环完成0到9的输出 whileDoWhile.java //使用whiledo while循环完成0到9的输出 public class WhileDoWhile { public static void main(String[] args) { int i = 0; while(i&...
  • do-while

    千次阅读 2018-07-08 12:39:24
    使用do/while循环语句可以实现这种操作方式。它的语法格式为:do statement while(condition)这种循环语句先执行语句(通常是一个语句块),再检测循环条件;然后重复语句,再检测,以此类推。程序中,首先计算退休...
  • 1. dowhile(0)消除goto语句通常,如果在一个函数中开始要分配一些资源,然后在中途执行过程中如果遇到错误则退出函数,当然,退出前先释放资源,我们的代码可能是这样:version 1 代码如下:bool Execute(){ // ...
  • C语言中do while用法

    千次阅读 2020-12-02 10:22:58
    C语言中do whilewhile与for循环用法 while循环的用法 while循环的结构如下 while (表达式){ 语句 }; 当表达式为真,执行下面的语句。语句执行完之后再判断表达式是否为真,若是真则继续执行下面的语句。...
  • C语言基础:whiledo while

    万次阅读 多人点赞 2018-03-14 19:13:30
    在第一章中我们已经简单学习了关于使用while语句来实现循环的操作,现在我们来详细讲述关于while语句的循环方式和do while语句的循环方式。一、whlie循环 while循环语句是C语言中最基本的循环方式,它的语法结构...
  • whiledo while的区别

    千次阅读 2017-11-06 13:23:56
    while 是先判断再执行 例: inti=10; while(i){ System.err.println(i);...do-while 是先执行再判断 例: int i=10; do{ System.err.println(i); i++; }while(i 两者的区别在于第一圈循环时,w
  • C语言 | do while语句

    千次阅读 2021-04-02 12:09:57
    C语言do while介绍 除了while语句以外,C语言还提供了dowhile语句来实现循环。 一般形式 do 语句 while(表达式) 其中语句就是循环体,先执行一次指定的循环语句,然后判别表达式,当表达式的值为非零(真)时...
  • 文章目录while 循环的语法结构 和 一些例子:1、求 10 以内每个整数的平方值:2、使用 while 循环 的嵌套来实现打印三角形:do..while 语法:    此链接通往 Bash Shell 编程学习的目录导航 ,从入门到放弃,感...
  • 四、while和dowhile循环结构

    千次阅读 2020-01-18 15:52:51
    dowhile循环结构 循环语句也叫迭代语句,是指在循环条件满足的情况下,重复执行一组代码块,直至循环条件不再满足或都遇到跳转语句 java中用于实现循环的语句有; while、do-while、for while循环 while循环的...
  • do while循环案例

    千次阅读 2020-04-10 09:11:44
    do while循环案例 // 1. 打印人的一生,从1岁到100岁 var i = 1; do { console.log('这个人今年' + i + '岁了'); i++; } while (i <= 100) // 2. 计算 1 ~ 100 之间所有整...
  • do while(0)的用法

    千次阅读 2015-12-16 11:09:00
    看到过一些程序中或者宏中使用do{} while (0)觉得挺奇怪,不知道为什么这么写,就百度了一下... 看到一个比较好的帖子,给大家分享下! 我遇见的宏 [cpp] view plaincopy #define ...
  • VBA-Do Until 和 Do while

    千次阅读 2020-02-12 21:53:51
    Sub doUtil() Dim num% 'until直到条件成立时,停止循环 'while当条件成立时,则开始循环 Do Until num >3 num = num + 1 MsgBox num Loop End Sub ...============================...Sub doWhile() Dim num% 'un...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,034,728
精华内容 413,891
关键字:

dowhile(0)