programing

sscanf("123456789123456789123456789123456789", "%d", &n")는 동작을 정의했습니까?

goodcopy 2022. 7. 27. 22:46
반응형

sscanf("123456789123456789123456789123456789", "%d", &n")는 동작을 정의했습니까?

언제sscanf()또는 에서 다른 기능을 수행합니다.scanf패밀리는 변환된 값이 대상 정수 유형의 최대값을 초과하는 일련의 자릿수가 주어집니다.

  • 변환이 실패한 것으로 간주해야 합니까?
  • 동작은 정의되어 있습니까?

표준 7.21.6.2p10 ((f)scanf, 패밀리 전체에 적용됩니다.

… 이 객체에 적절한 유형이 없거나 변환 결과를 객체에 표시할 수 없는 경우 동작은 정의되지 않습니다.

또 다른 이유인 것 같은데scanf가족.strtoXX함수는 완전히 정의된 동작을 가집니다.그들은 돌아옵니다LONG_MAX입력 및 설정이 너무 큰 경우 등errno == ERANGE따라서 정확한 정보가 필요한 경우 수동으로 입력을 토큰화하고 이러한 기능을 변환에 사용합니다.또 다른 장점은 오류 처리 능력 향상입니다.

언급URL : https://stackoverflow.com/questions/44740449/does-sscanf123456789123456789123456789-d-n-have-defined-behavior

반응형