Технология программирования. Базовые конструкции C/C++. Липачев Е.К. - 20 стр.

UptoLike

Составители: 

20
Пример. Возможная неоднозначность совместного использования
операторов в префиксной и постфиксной формах.
#include <iostream>
using namespace std;
int main()
{ int i=2, j=2;
int k=(i++) * (i++) * i;//k=8
int m=(++j) * (j++) * j;//m=?
cout<<”k= ”<<k<<” i= ”<<i<<” m= ”<<m<<” j= ”<<j;
return 0;
}
Стандартная рекомендация вместо эквивалентных (по значению)
операторов присваивания использовать операторы инкремента и декремента.
Это связано с тем, что компиляторы создают для них более эффективный
код.
Преобразование типов в операции присваивания
Если в операции присутствуют переменные разных типов, компилятор
производит, если это возможно, преобразование типов. Значение выражения
в правой части оператора присваивания преобразуется к типу переменной в
левой части.
Пример. Потеря информации при преобразовании.
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int i, j;
double x=0.5;
i=x;
j=1/2+1/2;
return 0;
}
     Пример. Возможная неоднозначность совместного использования
операторов в префиксной и постфиксной формах.
#include 
using namespace std;
int main()
{   int i=2, j=2;
     int k=(i++) * (i++) * i;//k=8
    int m=(++j) * (j++) * j;//m=?
     cout<<”k= ”<
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int i, j;
double x=0.5;
i=x;
j=1/2+1/2;
return 0;
}




                                  20