質問するログイン新規登録

質問編集履歴

1

知恵袋での指摘を元に一部修正

2016/06/24 03:10

投稿

yumetodo
yumetodo

スコア5852

title CHANGED
File without changes
body CHANGED
@@ -26,14 +26,14 @@
26
26
  template<typename T, enable_if_t<std::is_unsigned<T>::value, std::nullptr_t> = nullptr>
27
27
  constexpr T a(T min, T max, T n){
28
28
  return (n < min)
29
- ? a(min, max, n + (max - min + 1) * ((min - n) % (max - min + 1) + 1))
29
+ ? a(min, max, n + (max - min + 1) * ((min - n) / (max - min + 1) + 1))
30
30
  : (n - min) % (max - min + 1) + min;
31
31
  }
32
32
  ```
33
33
 
34
34
  という関数を作成しました。
35
35
 
36
- [http://melpon.org/wandbox/permlink/pc9I5NwbyKeRY6JB](http://melpon.org/wandbox/permlink/pc9I5NwbyKeRY6JB)
36
+ [http://melpon.org/wandbox/permlink/X9bbE8Bch292u68D](http://melpon.org/wandbox/permlink/X9bbE8Bch292u68D)
37
37
 
38
38
  ところが``T``がsignedな整数の時(つまり上の方の関数が呼ばれた時)、``MIN``と``MAX``が極端に離れていると(``INT_MIN``と``INT_MAX``とか)オーバーフローするように思います。
39
39