简体   繁体   中英

What is considered a statement in C++?

My professor commonly asks my class how many statements there are in a given program, but I can't determine what he defines as a statement. It seems as though an if/else is one statement, and a for loop is one statement regardless of if there are other supposed statements within it. Are there any governing rules for this matter or is his definition of his own invention?

Thanks

For a precise definition of a statement:

Definition: A statement is a block of code that does something. An assignment statement assigns a value to a variable. A for statement performs a loop. In C, C++ and C# Statements can be grouped together as one statement using curly brackets

{ statement1; statement2; }

As far as counting statements, I agree with the others, there's not much point. Counting Lines of Code (LOC) though, actually has some value and there's a lot of research that tries to relate the number of LOC to the workload of developers. It's possible that your instructor is having you count statements and thinking of statements as nothing more than a single LOC, which isn't quite the case.

Statements nest, ie smaller statements can be joined into larger statements, like compound statements. For this reason, the question about "how many statements are there in this program" are ambiguous. One has to define the counting method first. Without it the question of "how many" makes little sense.

In computer programming a statement can be thought of as the smallest standalone element of an imperative programming language. A program is formed by a sequence of one or more statements. A statement will have internal components (eg, expressions).

More at Statement (Computer Science) at Wikipedia .

Here is the function that handles statements parsing in JS alike language:

static void do_statement(CsCompiler *c )
{
    int tkn;
    switch (tkn = CsToken(c)) {

    case T_IF:          do_if(c);       break;
    case T_WHILE:       do_while(c);    break;
    case T_WITH:        do_with(c);     break;
    case T_DO:          do_dowhile(c);  break;
    case T_FOR:         do_for(c);      break;
    case T_BREAK:       do_break(c);    CsSaveToken(c,CsToken(c)); break;
    case T_CONTINUE:    do_continue(c); CsSaveToken(c,CsToken(c)); break;
    case T_SWITCH:      do_switch(c);   break;
    case T_CASE:        /*do_case(c);*/    CsParseError(c,"'case' outside of switch");  break;
    case T_DEFAULT:     /*do_default(c);*/ CsParseError(c,"'default' outside of switch");  break;
    case T_RETURN:      do_return(c);   break;
    case T_DELETE:      do_delete(c);   break;
    case T_TRY:         do_try(c);      break;
    case T_THROW:       do_throw(c);    break;
    case '{':           do_block(c, 0); break;
    case ';':           ;               break;
    default:  
      {
        CsSaveToken(c,tkn);
        do_expr(c);
        break;
      }
    }
}

As you see it includes things like for , while and also expressions (separated by ; )

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM