LINUX.ORG.RU

История изменений

Исправление Deleted, (текущая версия) :

В заголовке знаковый, в коде беззнаковый, первое, емнип, ub, второе нет. Уж определитесь где мухи а где котлеты

Там UB, при условии, что на его платформе sizeof(int) > sizeof(uint16_t) (что вообще должно быть). Это потому, что ТС не знает, что при выполнение арифметических операций:

6.3.1.1/2 If an int can represent all values of the original type, the value is converted to an int; otherwise, it is converted to an unsigned int.

И поэтому не понимает, что для компилятора код

uint16_t runSpeed = stopTime - startTime;

выглядит так:

uint16_t runSpeed = (uint16_t)(((int)stopTime) - ((int)startTime));

Исходная версия Deleted, :

В заголовке знаковый, в коде беззнаковый, первое, емнип, ub, второе нет. Уж определитесь где мухи а где котлеты

Там UB. Это потому, что ТС не знает, что при выполнение арифметических операций:

6.3.1.1/2 If an int can represent all values of the original type, the value is converted to an int; otherwise, it is converted to an unsigned int.

И поэтому не понимает, что для компилятора код

uint16_t runSpeed = stopTime - startTime;

выглядит так:

uint16_t runSpeed = (uint16_t)(((int)stopTime) - ((int)startTime));