данных эта операция:Арифметические операции на int32 и int64 со скобками
int64_t a_int64, b_int64 = WHATEVER1;
int32_t c_int32 = WHATEVER2;
a_int64 = b_int64 - (c_int32 * 1000000);
способствовало ли c_int32 к int64_t до умножения? Я знаю, что все целые числа продвигаются как минимум до «int» до любых арифметических операций и до размера большего операнда для двоичных операторов, если он имеет более высокий ранг, чем int. Но операции внутри круглых скобок обрабатываются отдельно от (второй) операции, вычитания?
- просто используйте '1000000ULL', чтобы указать, что оба аргумента умножения должны быть продвинуты как минимум до 64 бит. –
Примечание:'() 'являются скобками. Скобки - '[]'. – Olaf
@ Lashane: Правильно будет использовать макрос 'INT64_C'. И OP использует целые числа со знаком, суффикс 'U' ошибочен. – Olaf