ВУЗ:
Составители:
Рубрика:
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;
}
Пример. Возможная неоднозначность совместного использования операторов в префиксной и постфиксной формах. #includeusing 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
Страницы
- « первая
- ‹ предыдущая
- …
- 18
- 19
- 20
- 21
- 22
- …
- следующая ›
- последняя »