부호가없는 문자를 사용하여 작은 범위의 정수를 나타내는 프로그램이 있습니다. 접미사가 없기 때문에C 리터럴의 문자 부적합 유형에 대한 경고
Variable c initialized to type int, expects unsigned char: 0
Types are incompatible.
:
unsigned char c = 0;
경고를 제공합니다 : 나 자신이 프로그램의 여러 다른 부분에 0을 취소 할 필요가 발견, 나는 또한 최근에 분명히 부목 등을 사용하기 시작했다 리터럴 char의 경우 어떻게 이것을 해결하는 것이 가장 좋습니까? 몇 가지 옵션이 있다고 생각합니다.
1 : 경고를 무시하십시오.
2 :
unsigned char c = (unsigned char)0;
3 : 때마다 캐스트
unsigned char uc_0 = (unsigned char)0;
unsigned char c = uc_0;
4 : 함수 :
static inline unsigned char uchar(int in)
{
return (unsigned char)in;
}
unsigned char c = uchar(0);
IMO, 옵션 4로 가야합니다. 'return' 문에 캐스팅 할 필요가 없습니다.'표현식에 나타나는 함수의 반환 유형과 다른 유형이있는 경우 , 값은 함수의 반환 유형을 가진 객체에 대입하여 마치'6.8.6.4','c99'에서 변환됩니다. –
@iharob 컴파일러가 아닌, 부목 : http://www.splint.org/ – jayjay
@SouravGhosh 고마워, 그게 많은 의미가있어,하지만 나는 splint에서 경고없이 출력 할 캐스트가 필요하다. not signed type unsigned char' – jayjay