2015-07-19 4 views
0

Я попытался запустить следующий код в C:Что происходит, когда мы произвольно используем ==?

#include <stdio.h> 

int main() { 
    int a = 10, b = 5, c = 5; 
    int d; 
    d = b + c == a; 
    printf("%d", d); 
} 

я получил результат, как г = 1. Может кто-то пожалуйста, объясните мне, что происходит, когда мы используем == как это?

+1

Что вы подразумеваете под «как это»? В отличие от его использования? –

+1

Возможный дубликат [Является ли «истинный» результат из>, <,!, &&, || или == определено?] (http://stackoverflow.com/questions/7687403/is-the-true-result-of-or-defined) – GSerg

ответ

0

Поскольку сначала выполняется b + c, а после - сравнение с оператором ==.

0

В C, добавление имеет более высокий приоритет, чем ==, поэтому он добавляет б и в перед сравнением результата с а, так как это верно, то это приводит к 1, если оно было ложным это привело бы к 0.

0

== - оператор равный. Он возвращает 1, если обе стороны равны и 0 в противном случае.

+1

Даже в C11 '==' [возвращает] (http: // stackoverflow .com/a/18098119/11683) 'int', а не' bool'. – GSerg

+0

@GSerg yep. Спасибо, что указали мою ошибку. –

1

§6.5.9 (== и! =) - http://c0x.coding-guidelines.com/6.5.9.html

== (равно) и к = (не равно) операторы аналогичны реляционные операторы для их более низкого приоритета, за исключением .) Каждый из операторов дает 1, если указанное отношение истинно и 0, если оно ложно. Результат имеет тип int. Для любой пары операндов истинно одно из отношений.

Так вот, как b+c равно a и как имеет значение 10 поэтому она дает 1.