나는 다음과 같은 C 코드가 "44 잘못된 인수 전환하려면 : 크기가 UB4를 초과 경고"보풀 경고
unsigned long val = <my_size>;
switch(val)
{
case (1L<<10): // 1KB
// Do something
break;
case 1L<<20: // 1MB
// Do somnething
break;
case (1L<<30): // 1GB
// Do something
break;
case (1L<<40): // 1TB
// Do something
break;
// Other cases
default:
// Do something
break;
}
지금 보풀이 나에게
말하는 경고를주고있다을
unsigned long
에서 스위치를 사용하는 것이 맞습니까?
컴파일 오류가 없지만 코드가 올바르게 작동하고 재미있는 롤오버 유형이 계속 진행되고 있는지 확인하려고합니다.
스위치에 케이스 라벨이 너무 많지는 않습니다. 나는이에 읽고에서 온 한
- 그것은 switch 문 유형과 같은 Why can't your switch statement data type be long, Java?
자바의 경우 오래 걸리지 않을 것이다. C에 대해서도 마찬가지입니까?
이 필요한 경우 : 1. 나는 리눅스 보풀을 사용하고 컴파일러 3. 플랫폼 2. GCC는 아니, 자바와는 달리, C switch 문의 제어 문이 하나가 될 것을 허용
예, 스위치를 사용할 수 있습니다. 왜 K, M, T, G 접미사를 정수 리터럴에 추가하고 있습니까? 나는 그들에게 완전히 익숙하지 않다. 그들이하는 일 – Vality
@Vality 1 KiloByte, 1 GigaByte, 1 TeraByte 등을 말하면서 큰 케이스 값을 정당화 할 수있는 예제를 쉽게 읽을 수 있습니다. –
나는 그 질문에 답하는 것을 시도했지만, http://stackoverflow.com/help/mcve에서 잠시 살펴볼 것을 권한다. 실제로 구현되고 실행될 수있는 최소한의 예제를 선호하며 설명 된 증상을 생성합니다. 가능한 경우 빌드 가능한 코드와 도구에 대한 정보를 제공하여 문제를 재현 할 수 있도록하십시오. 다행스럽게도 도움이 될만한 대답을 줄 수 있기를 바랍니다. – Vality