LINUX.ORG.RU

Вопрос про #define

 


0

1

Если я напишу #define TEST (6.2*10) Компилятор интерпретирует это число как целое или с плавающей запятой?

Я так понимаю надо написать #define TEST (6.2*10)U что бы было как целоее

★★

Последнее исправление: voltmod (всего исправлений: 2)

Double. Макрос не при чём. Это тупая подстановка текста.

ox55ff ★★★★★
()

check.c:1:22: error: expected ‘,’ or ‘;’ before ‘U’ 1 | #define TEST (6.2*10)U | ^ check.c:3:18: note: in expansion of macro ‘TEST’ 3 | unsigned int a = TEST; | ^~~~

anonymous
()

Нужно явно кастовать выражение к нужному типу:

#define TEST ((int)(6.2*10))
xaizek ★★★★★
()

U используется для обозначения типа литералов. 100U - литерал типа unsigned. Вне литералов оно не имеет смысла (как у тебя - в выражении).

slovazap ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.