title: JNI convert jint to native int in C
body: <p>I've the following function declared in FileOutputStream.java</p>
  
  <pre><code>public native void write(int b) throws IOException;
  </code></pre>
  
  <p>I've read in <a href="https://stackoverflow.com/questions/6308782/convert-jni-types-to-native-types">this thread</a> that for converting the jint parameter to a native int you simply have to cast it. My c code:</p>
  
  <pre><code>JNIEXPORT void JNICALL Java_FileOutputStream_write__I(JNIEnv* jni, jobject obj, jint b){
      int native_b = (int)b;
      printf(b);
  }
  </code></pre>
  
  <p>If I call the function in java, I get the following error message:</p>
  
  <pre><code>#
  # A fatal error has been detected by the Java Runtime Environment:
  #
  #  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ffc7e01f3b2, pid=8700, tid=0x00000000000020e4
  #
  # JRE version: Java(TM) SE Runtime Environment (8.0_112-b15) (build 1.8.0_112-b15)
  # Java VM: Java HotSpot(TM) 64-Bit Server VM (25.112-b15 mixed mode windows-amd64 compressed oops)
  # Problematic frame:
  # C  [msvcrt.dll+0x4f3b2]
  #
  # Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
  #
  # An error report file with more information is saved as:
  # &lt;my_path&gt;\JNI\hs_err_pid8700.log
  #
  # If you would like to submit a bug report, please visit:
  #   http://bugreport.java.com/bugreport/crash.jsp
  # The crash happened outside the Java Virtual Machine in native code.
  # See problematic frame for where to report the bug.
  #
  </code></pre>
  
  <p>So I guess my cast is wrong. What do I have to do to get it right?</p>