2014-04-16 1 views
0

'의 결과 이것은 직렬 저항을 계산하거나 오류가 12컴파일 오류는 "S는, 미표시이고"그러나 scanf`

if (sp == s) 

전체 코드의 경우 선에 평행 한 내 코드 나는 또한

if (sp == "s") 

을 시도

#include <stdio.h> 

int main (void) { 
    char sp ; 
    float a, b, resistancep, resistances ; 
    printf ("Enter s for resistor in series or p for parallel\n") ; 
    scanf (" %c", &sp) ; 
    printf ("Enter two resistors calculate\n") ; 
    scanf ("%f%f", &a, &b) ; 
    resistancep = a * b/(a + b) ; 
    resistances = a + b ; 
    if (sp == s) { 
      printf ("The total resistance is%f\n", resistances) ; 
    } 
else { 
      printf ("The total resistance is%f\n", resistancep) ; 
    } 

이전의 실수

if (sp, s) 
+2

사용중인 언어로 편집하고 태그를 지정하십시오 (C 언어를 추측하고 있습니다). – SlightlyCuban

+1

그냥 궁금 해서요.''(sp, s)'의 의미는 무엇입니까? –

답변

4

당신은 아마 그냥 s 당신은 선언하지 않은 변수라는 이름의, 찾고있는

if (sp == 's') 

를 원한다.

"s" 보통 문자의 배열 인 문자열을 말한다. 입력 한 글자를 읽는 중이고 "s" != 's'입니다. 기억하고, array (거의)는 배열의 요소와 결코 같지 않습니다.

+2

글쎄, 기술적으로, CPU 아키텍처와 메모리 레이아웃이 맞다면 문자열은 첫 번째 문자와 같을 수 있습니다 ... – Kevin

+1

@Kevin, 매우 사실입니다 (그럴 경우 더러운 버그가 될 수 있음). 나는 확신하기 위해 결코 "결코"자격이 없다. – SlightlyCuban

+0

배열은 배열의 원소와 결코 같지 않으며 동일하지도 않습니다. ' "s"'는'char [2]'타입이고,'char *'로 붕괴합니다; ''s''는'int' 타입입니다. ''s '! ='s ''은 진실도 거짓도 아닙니다. 그것은 컴파일 타임 오류입니다. –