Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Непонятное поведение std::valarray - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Окружность по 3-ём точкам http://www.cyberforum.ru/cpp-beginners/thread186653.html
Здравствуйте! Помогите пожалуйста с заданием! Определить радиус и центр окружности минимального радиуса, проходящей хотя бы через три различные точки заданного множества точек на плоскости. ...
C++ Сумма цифр в матрице выше главной диаганали Двумерные массивы. Задача 2.1 Во входном файле задана целочисленная квадратная матрица. Посчитать среднее арифметическое значение ее нечетных элементов, расположенных выше главной диагонали. ... http://www.cyberforum.ru/cpp-beginners/thread186651.html
матрица C++
дана квадратная целочисленная матрица. организовать ввод матрицы. в каждой строке матрицы найти минимальный элемент и поменять его местами с элементом главной диагонали в этой строке. полученную...
Составить программу вычисления числового ряда для известного числа членов ряда N. C++
Пожалуйста, как на C++ выполнить это задание, много времени потратил и все никак. Работает частично, но что-то я упускаю. Составить программу вычисления числового ряда для известного числа членов...
C++ Файлы в С++ http://www.cyberforum.ru/cpp-beginners/thread186641.html
Привет всем. написал программу на С++. но почему-то она не работает. не записывает в выходной файл нужные значения. Помогите решить проблему. #include<iostream.h> #include<iomanip.h>...
C++ Переработать строку и изменить все русские буквы Ф на русскую букву Ю Возникла такая необходимость. Переработать строку и изменить все русские буквы Ф на русскую букву Ю. Вышла вот такая вот программа: #include "stdafx.h" #include <conio.h> #include... подробнее

Показать сообщение отдельно
Somebody
2789 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,193
Завершенные тесты: 1

Непонятное поведение std::valarray - C++

05.11.2010, 16:51. Просмотров 1168. Ответов 9
Метки (Все метки)

Есть такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <valarray>
 
using namespace std;
 
int main()
{
    valarray<int> a(2);
    a[0] = 2; a[1] = 1;
    a = a[0] * a;
    cout << a[0] << ' ' << a[1] << endl;
    cin.peek();
}
Если компилировать Borland'ом, выводит интуитивно понятное 4 2, а если g++, то 4 4. Если было бы
C++
1
a *= a[0];
то a[0] передаётся по ссылке, undefined behaviour. Но здесь же вроде должен создаваться временный valarray, из которого потом копируется в a. Sequence point'ы есть до и после вызова operator* и operator=. Но это всё равно выполняется как
C++
1
2
a[0] = a[0] * a[0];
a[1] = a[0] * a[1];
Что бы это всё могло значить?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru