Мы просто наткнулись на ошибку в версии нашего приложения Android, которая вызвана разницей компиляторов на iOS и Android. Любопытно, если кто -то может объяснить разницу и как заставить компилятор Android Native C работал как iOS. Вот упрощенная версия проблемы. < /P>
double zone = -7 / 24.0;
char command[80] = { '\0' };
< /code>
// Другие вещи < /p>
command[7] = zone * 24.0;
< /code>
Игнорируйте возможные ошибки круглой офф в вышеперечисленном. Это упрощенный пример. < /P>
На iOS команда [7] получает значение -7, вложенное в. Это то, что я ожидал бы, так как при выполнении назначения должен быть автоматический состав от двойного до шарика (или int). Мы попадаем в команду [7]. Если мы явно бросили это как < /p>
command[7] = (int)(zone * 24.0);
< /code>
Тогда он получает тот же результат, что и ios. < /p>
Кто -нибудь знает, почему два компилятора могут генерировать разные код? Если есть флаг компилятора на Android, чтобы компилятор ведут себя как в iOS? Приложение было тщательно протестировано на iOS, и мы немного осторожны с этой проблемой.
Подробнее здесь: https://stackoverflow.com/questions/214 ... evelopment