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

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

15.10.2013, 18:39. Показов 905. Ответов 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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
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
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 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
Каратель
Эксперт С++
6609 / 4028 / 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
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.10.2013, 21:48

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru