diff --git a/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp b/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp
index 5c8ef7e..ca38b0d 100644
--- a/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp
+++ b/native/jni/com_android_inputmethod_latin_BinaryDictionary.cpp
@@ -87,7 +87,7 @@
         AKLOGE("DICT: Can't allocate memory region for dictionary. errno=%d", errno);
         return 0;
     }
-    int ret = fseek(file, (long)dictOffset, SEEK_SET);
+    int ret = fseek(file, static_cast<long>(dictOffset), SEEK_SET);
     if (ret != 0) {
         AKLOGE("DICT: Failure in fseek. ret=%d errno=%d", ret, errno);
         return 0;
@@ -121,7 +121,7 @@
     }
     PROF_END(66);
     PROF_CLOSE;
-    return (jlong)dictionary;
+    return reinterpret_cast<jlong>(dictionary);
 }
 
 static int latinime_BinaryDictionary_getSuggestions(JNIEnv *env, jclass clazz, jlong dict,
@@ -216,7 +216,7 @@
 static jboolean latinime_BinaryDictionary_isValidBigram(JNIEnv *env, jclass clazz, jlong dict,
         jintArray wordArray1, jintArray wordArray2) {
     Dictionary *dictionary = reinterpret_cast<Dictionary *>(dict);
-    if (!dictionary) return (jboolean) false;
+    if (!dictionary) return JNI_FALSE;
     const jsize codePointLength1 = env->GetArrayLength(wordArray1);
     const jsize codePointLength2 = env->GetArrayLength(wordArray2);
     int codePoints1[codePointLength1];
diff --git a/native/jni/src/binary_format.h b/native/jni/src/binary_format.h
index 61780de..f19d5e3 100644
--- a/native/jni/src/binary_format.h
+++ b/native/jni/src/binary_format.h
@@ -314,7 +314,7 @@
 }
 
 static AK_FORCE_INLINE int shortcutByteSize(const uint8_t *const dict, const int pos) {
-    return ((int)(dict[pos] << 8)) + (dict[pos + 1]);
+    return (static_cast<int>(dict[pos] << 8)) + (dict[pos + 1]);
 }
 
 inline int BinaryFormat::skipChildrenPosition(const uint8_t flags, const int pos) {
diff --git a/native/jni/src/correction.cpp b/native/jni/src/correction.cpp
index afedd29..d4bd4aa 100644
--- a/native/jni/src/correction.cpp
+++ b/native/jni/src/correction.cpp
@@ -677,7 +677,7 @@
             const float factor =
                     SuggestUtils::getDistanceScalingFactor(static_cast<float>(squaredDistance));
             if (factor > 0.0f) {
-                multiplyRate((int)(factor * 100.0f), &finalFreq);
+                multiplyRate(static_cast<int>(factor * 100.0f), &finalFreq);
             } else if (squaredDistance == PROXIMITY_CHAR_WITHOUT_DISTANCE_INFO) {
                 multiplyRate(WORDS_WITH_PROXIMITY_CHARACTER_DEMOTION_RATE, &finalFreq);
             }
diff --git a/native/jni/src/proximity_info_state_utils.cpp b/native/jni/src/proximity_info_state_utils.cpp
index 9f85743..ac74a4e 100644
--- a/native/jni/src/proximity_info_state_utils.cpp
+++ b/native/jni/src/proximity_info_state_utils.cpp
@@ -211,7 +211,7 @@
                             ProximityInfoParams::NOT_A_DISTANCE_FLOAT;
             if (squaredDistance >= 0.0f) {
                 normalizedSquaredDistances[i * MAX_PROXIMITY_CHARS_SIZE + j] =
-                        (int) (squaredDistance
+                        static_cast<int>(squaredDistance
                                 * ProximityInfoParams::NORMALIZED_SQUARED_DISTANCE_SCALING_FACTOR);
             } else {
                 normalizedSquaredDistances[i * MAX_PROXIMITY_CHARS_SIZE + j] =
