2012-05-02 2 views
0

제품에서 일부 오래된 코드를 조사하고 있는데 다음 코드를 발견했습니다.은 연산자가 조건이없는 경우 호출됩니다.

#include <stdio.h> 
#include <string.h> 
int main (int argc, char **argv) { 
    const char *str = "abcdefghi"; 
    int value = strcmp(str, "abcdefghi") == 0; 
} 

이러한 코드는 int value = strcmp(str, "abcdefghi") == 0;의 목적은 무엇입니까?

답변

5

그것은 0 또는 1 무엇 strcmp 수익률에 따라 될 것입니다 strcmp(str, "abcdefghi") == 0의 결과 value 초기화 중 하나에 C 발현 결과에 관계 연산자를 사용의 결과입니다.

1

0 또는 1

0

strcmp(str, "abcdefghi")하면 반환 0 다음 strcmp(str, "abcdefghi") == 0는 true를 돌려줍니다 그것은 한 다음 value은 0

0
int value = strcmp(str, "abcdefghi") == 0; 

의 값을 할당 할 것이다 반환하는 경우 value는 값 1을 할당 할 것이라고는

int value = (strcmp(str, "abcdefghi") == 0); 
같은 것입니다

strcmp가 0을 반환하면 (0 == 0) 이는 1을 의미합니다.

  if strcmp returns anything else then 0 then() will give 0 
관련 문제