В приведенном ниже примере, если uncomment float f = 0.0;
,
и заменив return(0.0 ? 1 : 0);
на return(f ? 1 : 0);
.
Выходной сигнал NIL
.
Вот мой код:
/* file main.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86
cl -W4 -MTd -O2 -TC main.c -Fetest */
#include <stdio.h>
int my_func(void)
{
/* float f = 0.0; */
return(0.0 ? 1 : 0);
}
int main(void)
{
printf("%s\n", ( my_func() ? "ONE" : "NIL") );
return 0;
}
На 32-битной машине Windows, используя Visual Studio, этот код выводит:
ONE
- Почему
my_func()
возвращает значениеtrue
(1)? - Как компилятор C интерпретирует это выражение
(0.0 ? 1 : 0)
?