2014-07-15 1 views
0

안녕하세요.이 간단한 코드에서이 이상한 경고가 나에게 완전히 혼란 스럽습니다. 나는 물마루를 페이지에서 검색했고, 서명이 될 수 있기 때문에 문자를 행렬 색인으로 사용하지 않도록 사용자에게 경고하는 경고임을 알았지 만, 분명히 그렇지 않습니다.배열 첨자에 'char'유형이 있습니다. 배열을 사용하지 않고 경고가 표시됩니다.

#include <stdio.h> 
#include <ctype.h> 

int main() { 

    char c='t'; 
    if (isspace(c)==0) 
     printf ("%c is not a space",c); 

    return (EXIT_SUCCESS); 
} 

내 질문에 경고의 이유는 무엇인가 : 다음

코드인가? isspace이 인수를 int로 기대한다는 사실과 관련이 있습니까?

+0

필요' "#INCLUDE 을'사용 – BLUEPIXY

답변

1

가 signned 할 수 있지만, 분명히이 경우 실제로

아니기 때문에 행렬의 인덱스로 문자를 사용하지 않는 사용자에게 알려주는 경고,이 경우는 ... 당신이 무엇을보고 컴파일러가 보는 것이 아닙니다.

isspace가 int를 인수로 사용한다는 사실과 관련이 있습니까?

예; isspace은 (컴파일러 구현시) 배열에 액세스하는 매크로입니다 ... ctype.h를 살펴 보거나 컴파일러에게 매크로 (예 : gcc -E)를 확장 해 줄 것을 요청하면 배열 액세스가 표시됩니다.

, 경고를 피하기

if (!isspace((unsigned char)c)) 
관련 문제