В основу языка С++ положено выражение, благодаря ему в программе совершается большая часть действий. Для того чтобы вы поняли, почему это так, напомню, что в языке С++ определены три категории операторов: ключевое слово, блок и выражение. Это означает, что любой оператор, который не начинается ключевым словом и не описывает блок, по определению является оператором-выражением. Следовательно, все приведенные далее операторы — это выражения. count = 100; , II строка 1 sartple = i / 32 * (с-10) ; // строка 2 num = abs(count) * 2; // строка 3 strcpy(strl, str2); // строка 4 Давайте посмотрим пристальней на каждый из этих операторов-выражений. В языке С++ знак равенства (=) означает операцию присваивания. Это важно. Язык С++ не трактует присваивание как отдельный вид оператора, в отличие от некоторых других языков программирования. Напротив, в С++ знак равенства — это операция присваивания, и значение, полученное в результате этой операции, равно величине, полученной в правой части выражения. Следовательно, в языке С++ оператор присваивания — это на самом деле выражение присваивания (assignment expression). А поскольку это выражение, оно имеет значение. Вот почему корректна запись приведенных далее выражений. а = b = с = 100; If ( (а = 4+5) == 0 ) ...; Причина работоспособности приведенных операторов в том, что операция присваивания порождает значение В строке 2 приведено более сложное выражение присваивания. В этом случае вычисляется значение выражения справа от знака равенства и присваивается переменной sample. В строке 3 вызывается функция abs (), возвращающая абсолютное значение своего аргумента. Таким образом, использование функции в выражении приводит к вызову этой функции. Как показано в строке 4, даже сам по себе вызов функции — это уже выражение. В данном случае вызывается функция strcpyO для копирования содержимого одной строки в другую. И хотя значение, возвращаемое функцией strcpyO, игнорируется, вызов этой функции представляет собой выражение.
|