Почему этот код выводит «да», хотя в следующем коде есть оператор присваивания, а не сравнения - PullRequest
0 голосов
/ 11 июня 2019

В условии if есть оператор присваивания, и при выполнении он выводит "yes" в качестве вывода.Я не получил это.

#include<stdio.h>

int main()
{
    float f = 0.1;

    if (f=0.1)
    {
        printf("Yes");
    }
    else 
    {
        printf ("no");
    }
}

1 Ответ

4 голосов
/ 11 июня 2019

Оператор присваивания имеет результат, это только что назначенная переменная!

Таким образом, код фактически эквивалентен:

f = 0.1;
if(f) // and as unequal to 0...

Вы можете попытаться присвоить 0.0 для сравнения:

if(f = 0.0)

Теперь будет напечатано no.

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