Мы с коллегой учимся на тесте, где мы должны проанализировать код C. Просматривая тесты от предыдущих лет, мы увидели следующий код, который мы действительно не понимаем:Расчет с поплавком в макросах в C
#include <stdio.h>
#define SUM(a,b) a + b
#define HALF(a) a/2
int main(int argc, char *argv[])
{
int big = 6;
float small = 3.0;
printf("The average is %d\n", HALF(SUM(big, small)));
return 0;
}
Этот код печатает 0, которые мы не понимаем вообще ... Можете ли вы объяснить это нам?
Большое спасибо!
он должен делать с формата. –
и переменные add() для макросов (например, '#define HALF (a) (a)/2') –
[Необходимость скобок в макросах в C] (http://stackoverflow.com/q/10820340/ 995714). Даже если вы использовали исправление спецификатора формата, вы получите неожиданные результаты, если не ставите круглые скобки. Просто попробуйте и посмотрите –