“경고 : 반환은 캐스트없이 포인터에서 정수를 만듭니다”는 무엇을 C에서 의미합니까?

StackOverflow https://stackoverflow.com/questions/788752

문제

나는 C에서 6 비트 번호를 가져 가고 처음 3 비트를 운동하고 "r", "w"또는 "o"를 반환하는 C에 간단한 기능을 작성합니다.

그러나 컴파일하면이 경고를받습니다. '반환은 캐스트없이 포인터에서 정수를 만든다'. 그런 다음 프로그램을 실행할 때이 기능이 제가 후에 세 가지 중 하나가 아닌 이상한 캐릭터를 반환하고 있음을 알았습니다.

여기서 무슨 일이 일어나고 있습니까? 미리 감사드립니다.

내 기능은 다음과 같습니다.

char
readorwrite(int opcode)
{
    if (opcode >> 3 == 4) {
        return "r";
    } else if (opcode >> 3 == 5) {
        return "w";
    } else {
        return "o";
    }
}
도움이 되었습니까?

해결책

문제는 "r", "w"및 "o"가 문자열 상수라는 것입니다. 이는 실제 유형이 char [] 또는 char*임을 의미합니다. 즉, 기능이 실제로 제로 종료 문자열로 S 포인터를 반환하고 있음을 의미합니다. 단일 문자의 경우 'r', 'w'및 'o'를 대신 사용해야합니다.

다른 팁

당신은 a const char *, 즉, 문자열 "o"가 char 'o'를 반환 할 때 저장되는 메모리 위치에 대한 포인터.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top