Почему «#define EOF (-1)», а не только «#define EOF -1»

Я использую Visual Studio 2015 для изучения некоторых базовых C. Во время экспериментирования с символической константой EOF я решил найти ее определение, и вот что я нашел:

#define EOF (-1) 

Я, хотя это было странно, что -1 был заключен в круглые скобки, поэтому я решил создать свою собственную -1-символическую константу, поэтому я сделал следующее:

 #define ABC -1 

В отладчике как EOF, так и ABC отображаются как значение -1, поэтому я начал задаваться вопросом, почему определение EOF использует (-1) для представления -1 когда скобки не кажутся необходимыми?

Благодарю.

Всегда полезно, если не нужно, добавлять необходимые числа скобок в определенный макрос.

Например, если вы это сделаете

 #define SUM(a,b) a + b #define MUL(a,b) a * b int a = MUL(4+5, 2+3); // you get 4+5*2+3 = 17 instead of 45. int b = 4 * SUM(1,1); // you get 4*1+1 = 5 instead of 8. 

Так что лучше писать

 #define SUM(a,b) ((a) + (b)) #define MUL(a,b) ((a) * (b)) 

И поскольку это хорошая привычка, всегда используйте () в макросах.

Еще одна веская причина – пример, показанный в комментариях к вашему вопросу.