There is no direct way to do this. The only information you have in your printf call is a variable x whose current value happens to be 1 (at run time), which happens to be the expansion of a macro whose name is ONE. There is no way for the compiler to figure out the name ONE from that information. There might be several different macros with the same definition, or there might not be any.
If you want to print the string ONE given the integer value 1, you're going to have to set up some kind of lookup table or function. For example:
const char *const names[] = { "ZERO", "ONE", "TWO", "THREE", "FOUR", /* etc. */ };
printf("%s\n", names[x]);
It would be entirely up to you to get the names right, so that for example 1 doesn't map to "THREE".
printf? If that does not help, maybe you miss some of the basics of the language. The code above invokes undefined behaviour, iow: it is not valid C.//the excepted output will be "ONE"Are you sure about this? Did you try that?int x=ONE + ONE;?ONEand theintvariable. No offence. but please get a book about programming in general and C specifically.