В зависимости от настроек вашего компилятора, может быть или не быть предупреждение о смешивании целых чисел со знаком и без знака. Там не будет ошибки. Применяются все предостережения из приведенных выше ответов - unsigned int
значения 0x80000000 (2 147 483 648) и выше приведут к отрицательным целым числам на стороне Java.
Если необходимо, чтобы эти большие числа были сохранены в Java, вместо этого используйте jlong
в качестве возвращаемого типа данных и выполните преобразование следующим образом:
return (jlong)(unsigned long long)i;
Смысл в том, чтобы сначала расширить до 64 бит, а затем отбросить беззнаковое. Если сделать это наоборот, получится 64-битное отрицательное число.