Подтвердить что ты не робот

Что выражение и выражение в С++?

Я читал, что обычно утверждения в c++ заканчиваются точкой с запятой; так что это может помочь объяснить, что будет выражением выражения. Но тогда что бы вы назвали выражением, приведя пример?

В этом случае, являются ли просто заявления или выражения заявления или выражения?

int x;
x = 0;
4b9b3361

Ответ 1

Выражение представляет собой "последовательность операторов и операндов, которые задают вычисление" (это определение дано в стандарте С++). Примерами являются 42, 2 + 2, "hello, world" и func("argument"). Назначения - это выражения в С++; так и вызовы функций.

Я не вижу определения термина "оператор", но в основном это кусок кода, который выполняет какое-то действие. Примерами являются составные инструкции (состоящие из нуля или более других операторов, включенных в {... }), если операторы, операторы goto, операторы return и выражения. (В С++, но не в C, объявления классифицируются как утверждения.)

Операторы и выражение терминов очень точно определяются грамматикой языка.

Оператор выражения - это особый вид оператора. Он состоит из необязательного выражения, за которым следует точка с запятой. Выражение оценивается и любой результат отбрасывается. Обычно это используется, когда оператор имеет побочные эффекты (в противном случае это не так много), но вы можете иметь оператор выражения, в котором выражение не имеет побочных эффектов. Примерами являются:

x = 42; // the expression happens to be an assignment

func("argument");

42; // no side effects, allowed but not useful

; // a null statement

Нулевой оператор является частным случаем. (Я не уверен, почему он так относился, по моему мнению, было бы более разумно, если бы это было неопределенным выражением, но так, как это определяет стандарт).

Обратите внимание, что

return 42;

- это оператор, но это не выражение. Он содержит выражение, но выражение (плюс ;) не составляет всего утверждения.

Ответ 2

Это выражения (помните math?):

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

Ниже перечислены все утверждения:

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

Заявление обычно состоит из выражения:

if(a > b)           // a > b is an expr.
    while(true)     // true is an expr.
        func();     // func() is an expr.

Ответ 3

Чтобы понять, что такое выражение выражения, вы должны сначала знать, что такое выражение и что такое выражение.

Выражение в языке программирования представляет собой комбинацию одного или нескольких явных значений, констант, переменных, операторов и функций, которые язык программирования интерпретирует (в соответствии с его конкретными правилами приоритета и ассоциации) и вычисляет, чтобы произвести ("вернуть") в среде с состоянием) другая ценность. Этот процесс, как и для математических выражений, называется оценкой.

Источник: https://en.wikipedia.org/wiki/Expression_(computer_science)

Другими словами, выражения являются своего рода элементами данных. Они могут иметь одну или несколько сущностей, таких как константы и переменные. Эти объекты могут быть связаны или связаны друг с другом операторами. Выражения могут иметь или не иметь побочные эффекты в том смысле, что они оценивают что-либо посредством вычислений, которые изменяют состояние. Например, числа, которые выглядят как математические формулы и вычисления, присваивания, вызовы функций, логические вычисления, строки и строковые операции, все считаются выражениями.

вызовы функций: согласно MSDN вызовы функций считаются выражениями. Вызов функции - это выражение, которое передает управление и аргументы (если таковые имеются) в функцию и имеет форму: expression (expression-list opt) которое вызывается оператором функции ( ).

источник: https://msdn.microsoft.com/en-us/library/be6ftfba.aspx

Некоторые примеры выражений:

46
18 * 3 + 22 / 2
a = 4
b = a + 3
c = b * -2
abs(c)
b >= c
c
"a string"
str = "some string"
strcat(str, " some thing else")
str2 = "some string" + " some other string" // in C++11 using string library

Операторы - это фрагменты программы, которые выполняются последовательно и заставляют компьютер выполнять определенные действия. Некоторые типы операторов C++:

  • выражения высказываний;
  • составные высказывания;
  • отбор заявлений;
  • итерационные операторы;
  • заявления о прыжке;
  • декларационные заявления;
  • пробовать блоки;
  • атомные и синхронизированные блоки (тм TS).

Источник: http://en.cppreference.com/w/cpp/language/statements

Обычно я читал утверждения в C++, заканчивающиеся точкой с запятой;

Да обычно ! Но не всегда. Рассмотрим следующий фрагмент кода, который является составным оператором, но не заканчивается точкой с запятой, скорее он заключен в две фигурные скобки:

{   // begining of a compound statement
    int x;    // A declaration statement
    int y;
    int z;
    x = 2;    // x = 2 is an expression, thus x = 2; with the trailing semicolon is an expression statement
    y = 2 * x + 5;
    if(y == 9) {    // A control statement
        z = 52;
    } else {        // A branching statement of a control statement
        z = 0;
    }
 }    // end of a compound statement

К настоящему моменту, как вы можете догадаться, оператор выражения - это любой оператор, у которого есть выражение, за которым следует точка с запятой. Согласно MSDN оператор выражения является оператором, который вызывает выражение выражения. В результате выражения выражения передача управления или итерация не выполняются.

Источник: https://msdn.microsoft.com/en-us/library/s7ytfs2k.aspx

Некоторые примеры выражений:

x = 4;
y = x * x + 10;
radius = 5;
pi = 3.141593;
circumference = 2. * pi * radius;
area = pi * radius * radius;

Поэтому следующее не может рассматриваться как операторы выражений, поскольку они передают поток управления в другую часть программы, вызывая функцию:

printf("The control is passed to the printf function");
y = pow(x, 2);

побочные эффекты: побочный эффект относится к изменению состояния. Например, изменение значения переменной, запись некоторых данных на диск с отображением меню в пользовательском интерфейсе и т.д.

Источник: https://en.wikipedia.org/wiki/Side_effect_(computer_science)

Обратите внимание, что операторы выражений не должны иметь побочных эффектов. То есть им не нужно менять или модифицировать любое состояние. Например, если мы рассматриваем поток управления программой как состояние, которое можно изменить, то следующие операторы выражений не будут иметь побочных эффектов для потока управления программой:

a = 8;
b = 10 + a;
k++;

Если следующий оператор выражения будет иметь побочный эффект, так как он передаст поток управления функции sqrt(), тем самым изменив состояние:

d = sqrt(a);    // The control flow is passed to sqrt() function

Если мы рассмотрим значение переменной также как состояние, изменение его будет побочным эффектом, поэтому все вышеприведенные операторы выражения имеют побочные эффекты, поскольку все они изменяют состояние. Выражение выражения, которое не имеет побочных эффектов, не очень полезно. Рассмотрим следующие выражения выражения:

x = 7;  // This expression statement sets the value of x to 7
x;      // This expression statement is evaluated to 7 and does nothing useful 

В приведенном выше примере x = 7; это полезное выражение для нас. Он устанавливает значение от x до 7 с помощью = оператора присваивания. Но x; оценивает до 7, и это не делает ничего полезного.

Ответ 4

В соответствии с языком программирования С++ по Bjarne Stroustrup Special (3rd) Edition утверждение представляет собой в основном любое объявление, вызов функции, назначение или условное. Хотя, если вы посмотрите на грамматику, это намного сложнее. Выражение простым языком является любой математической или логической операцией.

Ссылки на Википедию, которые одобрены в его ответе, также могут помочь.

Ответ 5

По-моему,

a statement * указывает * назначение блока кода. то есть мы говорим, что этот блок кода if(){} является if-statement, или этот x=42; является выражением выражения. Таким образом, код, такой как 42;, не содержит purporse, поэтому это * не * оператор.

и

выражение представляет собой любую юридическую комбинацию символов, которая представляет значение (кредит Webopedia); он объединяет переменные и константы для создания новых значений (см. главу 2 на языке программирования C). Поэтому он также имеет математическую коннотацию. Например, число 42 в x=42; является выражением (x=42; не является выражением, а скорее выражением выражения), или func(x) является выражением, потому что оно будет оценивать что-то. Наоборот, int x; не является выражением, поскольку оно не представляет никакого значения.

Ответ 6

Я думаю, что этот отрывок из технической книги наиболее полезен и понятен.

Прочитайте параграфы, пока начало 1.4.2 не будет достаточно полезным.