С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
3 / 3 / 0
Регистрация: 16.02.2013
Сообщений: 59
1

макрос препроцессора

15.10.2013, 18:39. Показов 955. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте ув. форумчани. Читаю книгу "Философия с++. Введение в стандартный с++". Дошел к одному примеру. И все компилируется, но результат выполнения математических операций не выводится. Как я понимаю вся проблема в макросе PRINT, т.к. если результат через cout вполне нормально выводит. Хочется узнать, что не так собственно говоря. Вот сам код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// Математические операторы;
#include <iostream>
using namespace std;
 
 
// Вспомогательный макрос для вывода строки и значения;
 #define PRINT(STR, VAR) \
    cout << STR << " = " << endl;
 
int main() {
    int i, j, k;
    float u, v, w; // Также относится к double;
    cout << "enter an integer: ";
    cin >> j;
    cout << "enter another integer: ";
    cin >> k;
    PRINT("j", j); PRINT("k", k);
    i = j + k; PRINT("j + k", i);
    i = j - k; PRINT("j - k", i);
    i = k / j; PRINT("k / j", i);
    i = k * j; PRINT("k * j", i);
    i = k % j; PRINT("k % j", i);
    
// Следующая команда работает только с целыми числами;
    j %= k; PRINT("j %= k", j);
    cout << "Enter a foating-point number: ";
    cin >> v;
    cout << "Enter another floating-point number";
    cin >> w;
    PRINT("v", v); PRINT("w", w);
    u = v + w; PRINT("v + w", u);
    u = v - w; PRINT("v - w", u);
    u = v * w; PRINT("v * w", u);
    u = v / w; PRINT("v / w", u);
// Следующий фрагмент также работает с int, double и char;
    u += v; PRINT("u += v", u);
    u -= v; PRINT("u -= v", u);
    u *= v; PRINT("u *= v", u);
    u /= v; PRINT("u /= v", u);
    }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.10.2013, 18:39
Ответы с готовыми решениями:

Директивы препроцессора Составить программу, использующую директивы препроцессора
1) Задать константы M1,M2,...,M5 и вычислить M1+ 2M2 + 3M3 + 4M4 + 5M5 2) С помощью директив #if,...

Директивы препроцессора
Добрый вечер, форумчане. Возникла проблема: В условии задания имеется - базовый класс и 2-х...

Директивы препроцессора
Помогите разобраться. Я не могу понять как работают директивы препроцессора. Где находится файл...

Обработка препроцессора
Дня доброго. Есть небольшая проблема #include&lt;iostream&gt; using namespace std; #define M 10...

5
Неэпический
18112 / 10699 / 2062
Регистрация: 27.09.2012
Сообщений: 26,944
Записей в блоге: 1
15.10.2013, 18:41 2
C++
1
2
 #define PRINT(STR, VAR) \
    cout << STR << " = " << endl;
А где вывод то в этом макросе?

Может так:
C++
1
2
 #define PRINT(STR, VAR) \
    cout << STR << " = " << (VAR) << endl;
1
18 / 18 / 5
Регистрация: 03.07.2013
Сообщений: 49
15.10.2013, 18:46 3
Замени на:
C++
1
2
 #define PRINT(STR, VAR) \
    cout << STR << " = " << VAR << endl;
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
15.10.2013, 19:00 4
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
 
#define VAR_DUMP(x) std::cout << #x" = " << x
 
int main() 
{
    int i = 100500;
    VAR_DUMP(i);
    return 0;
}
1
Неэпический
18112 / 10699 / 2062
Регистрация: 27.09.2012
Сообщений: 26,944
Записей в блоге: 1
15.10.2013, 21:32 5
Jupiter, x в конце лучше бы в скобки взять:
C++
1
#define VAR_DUMP(x) std::cout << #x" = " << (x)
0
Jupiter
15.10.2013, 21:48     макрос препроцессора
  #6

Не по теме:

Croessmah, не надо вообще использовать препроцессор передавать выражения туда где ожидается переменная, название макроса на это намекает, а если кто-то передал то это его проблемы

0
15.10.2013, 21:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.10.2013, 21:48
Помогаю со студенческими работами здесь

директива препроцессора
Не получается запустить простенькую программу на С++ Borland,вроде сделал все как надо,но выдает...

Директивы препроцессора
помогите плз с прогой Директивы препроцессора Составить программу, использующую директивы...

Использование препроцессора
Здравия желаю!:) Есть ли смысл в конструкции #ifdef - #endif в данном коде, и если есть, то...

Директива препроцессора #if
Вобще при коспиляции файла взятого с офф сайта микрософт endian.h Получаю вот такие ошибки...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее: На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru