나는 닷넷 프로그램에서 이상한 행동을 목격하고 있습니다 : Console.WriteLine(Int64.MaxValue.ToString());
// displays 9223372036854775807, which is 2^63-1, as expected
Int64 a = 256*256*256*127; // ok
Int64 a = 256*256*256
우리는 리눅스 커널 안에 코드를 작성하고 있기 때문에 리눅스 커널 코드에서 작동하는 PC-Lint/Flexelint를 얻을 수 없었습니다. 너무 많은 내장 기호 등. 그러나 그것은 부작용입니다. 우리는 gcc로 시작하는 컴파일러가 몇 가지 있지만 다른 것들도 있습니다. 그들의 경고 옵션은 시간이 지남에 따라 점점 강해지고 있으며, 정적 분석 도구 역시 강력
두 개의 부호있는 정수가 있고이를 뺍니다. 오버플로인지 알아야합니다. int one;
int two;
int result = two-one;
if (OVERFLOW) {
printf("overflow");
} else {
printf("no overflow");
}
그런 것. 이것을 할 수있는 좋은 방법이 있습니까?