Выражение должно иметь интегральный тип в си

Обновлено: 21.11.2024

Будьте нежны. Я занимаюсь 5 неделями обучения C++. Я вырыл и вырыл и не могу понять, почему Visual Studio Express (и онлайн-компиляторы) бросает ошибки об этом.

Обратите внимание, что я включил все мои объявления для ясности - большинство из них используется в разных разделах кода. Линия, которая получает ошибки, newsharePrice = perchangeEnd * profitLoss << '\n'; : newsharePrice = perchangeEnd * profitLoss << '\n';

Ошибка, которую я получаю, - c2296, левый операнд имеет тип double. Я понятия не имею, почему это не нравится. Я умножаю другие удваивающиеся просто отлично.

2 ответа

Ну, просто прочитайте проблематичную строку:

Что << '\n' не является частью умножения; копия-макароны терпят неудачу из ваших строк cout ?

В этом контексте у компилятора нет выбора, кроме как предположить, что вы пытаетесь выполнить поразрядную операцию сдвига влево, которая не может выполняться в double s; только на целые числа.

Хотя ошибка компиляции теперь исправлена, ваша ошибка домена все еще существует (сегодня пятница, не так ли?). Почему котировка акций влияет на вашу комиссию каким-либо образом? Вы уже занимаете свою позицию. Вы также измеряете количество акций с точностью с плавающей запятой. Хотя в некоторых случаях у вас может быть нечетное количество акций, это происходит довольно редко. Вы действительно объясняете это или просто неправильно используете double? Большинство систем подсчитывают количество акций как целое. Кроме того, у вас может быть отрицательное положение, которое, в конце концов, приведет к отрицательной комиссии! Брокеры не согласятся с этим;). Последнее, но не менее важное, в комиссии США редко выражается в процентах от стоимости транзакции. Обычно он взимается в виде центов на акцию (или фиксированных транзакционных издержек для большинства розничных брокеров).

Читайте также: