Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

what's an expression and expression statement in c++?

Tags:

c++

I've read that usually statements in c++ end with a semi-colon; so that might help explain what an expression statement would be. But then what would you call an expression by giving an example?

In this case, are both just statements or expression statements or expressions?

int x; x = 0; 
like image 926
user942451 Avatar asked Sep 20 '11 03:09

user942451


People also ask

What is difference between expression and statement in C?

An expression is something that returns a value, whereas a statement does not. The Big Deal between the two is that you can chain expressions together, whereas statements cannot be chained. Sure statements can be chained.

What do you mean by expression and statement?

In programming language terminology, an “expression” is a combination of values and functions that are combined and interpreted by the compiler to create a new value, as opposed to a “statement” which is just a standalone unit of execution and doesn't return anything.

What is an expression give an example in C?

An expression is a combination of operators and operands which reduces to a single value. An operation is performed on a data item which is called an operand. An operator indicates an operation to be performed on data. For example, z = 3+2*1. z = 5.

Is expression and statement the same?

Statements represent an action or command e.g print statements, assignment statements. Expression is a combination of variables, operations and values that yields a result value.


2 Answers

An expression is "a sequence of operators and operands that specifies a computation" (that's the definition given in the C++ standard). Examples are 42, 2 + 2, "hello, world", and func("argument"). Assignments are expressions in C++; so are function calls.

I don't see a definition for the term "statement", but basically it's a chunk of code that performs some action. Examples are compound statements (consisting of zero or more other statements included in { ... }), if statements, goto statements, return statements, and expression statements. (In C++, but not in C, declarations are classified as statements.)

The terms statement and expression are defined very precisely by the language grammar.

An expression statement is a particular kind of statement. It consists of an optional expression followed by a semicolon. The expression is evaluated and any result is discarded. Usually this is used when the statement has side effects (otherwise there's not much point), but you can have a expression statement where the expression has no side effects. Examples are:

x = 42; // the expression happens to be an assignment  func("argument");  42; // no side effects, allowed but not useful  ; // a null statement 

The null statement is a special case. (I'm not sure why it's treated that way; in my opinion it would make more sense for it to be a disinct kind of statement. But that's the way the standard defines it.)

Note that

return 42; 

is a statement, but it's not an expression statement. It contains an expression, but the expression (plus the ;) doesn't make up the entire statement.

like image 105
Keith Thompson Avatar answered Sep 20 '22 10:09

Keith Thompson


These are expressions (remember math?):

1 6 * 7 a + b * 3 sin(3) + 7 a > b a ? 1 : 0 func() mystring + gimmeAString() + std::string("\n") 

The following are all statements:

int x;                            // Also a declaration. x = 0;                            // Also an assignment. if(expr) { /*...*/ }              // This is why it's called an "if-statement". for(expr; expr; expr) { /*...*/ } // For-loop. 

A statement is usually made up of an expression:

if(a > b)           // a > b is an expr.     while(true)     // true is an expr.         func();     // func() is an expr. 
like image 42
Mateen Ulhaq Avatar answered Sep 23 '22 10:09

Mateen Ulhaq