Вопросы по теме 'integer-promotion'
Yoda Условия и целочисленное продвижение
При сравнении типа, превышающего int , с целочисленной константой, следует ли размещать константу слева или справа, чтобы обеспечить правильное сравнение?
int64_t i = some_val;
if (i == -1)
или должно быть:
if (-1 == i)
Существуют...
1446 просмотров
schedule
13.06.2022
Выполняет ли оператор Unary + преобразование типов?
До сих пор я считал, что унарный оператор + бесполезен.
Но потом я наткнулся на следующий пример:
char ch;
short sh;
int i;
printf("%d %d %d",sizeof(ch),sizeof(sh),sizeof(i)); // output: 1 2 4
printf("%d %d...
2419 просмотров
schedule
16.05.2022
Является ли унарный минус эквивалентным бинарному минусу?
Мой компилятор C выдавал предупреждение при использовании унарного минуса для значения unsigned , поэтому я исправил предупреждение, выполнив вместо этого вычитание из 0.
Теперь мне интересно, эквивалентен ли текущий код исходному:
uint32_t a,...
111 просмотров
schedule
11.03.2022
Как переопределить правило интегрального продвижения для перечисления?
Это тесно связано с вопросом Являются ли перечисления C++ подписанными или неподписанными? . Согласно ответу JavaMan, enum не является ни signed , ни unsigned . Но он следует неотъемлемым правилам продвижения.
Я работаю с библиотекой,...
439 просмотров
schedule
04.02.2024
C sprintf ломается с байтовыми параметрами (компилятор Keil)
У меня есть код, работающий в двух проектах / платформах. Он работает в одном, а не в другом. Код такой:
uint8_t val = 1;
uint8_t buff[16];
sprintf(buff, "%u", val);
Ожидаемый результат - «1» (gcc), но в одном компиляторе (Keil) он...
677 просмотров
schedule
26.03.2022
продвижение короткого целого числа без знака в 32-битной системе
У меня есть 32-битный целочисленный размер
если у меня есть арифметическое выражение вроде
unsigned short current_time, last_time
if((current_time - last_time) > timeout)
Я считаю, что current_time и last_time будут преобразованы в...
449 просмотров
schedule
23.02.2023
Имеет ли перечислитель, используемый в выражении, тот же тип, что и базовый тип его перечисления?
Каков тип константы перечисления, когда она используется вне определения перечисления без области видимости?
Рассмотрим следующий код:
#include <iostream>
enum modes
{
begin = 0,
end = 1
};
int main()
{
std::cout <<...
129 просмотров
schedule
28.09.2023
Является ли сдвиг знакового бита подписанным коротким неопределенным поведением в C?
Я слышал, что переход на бит целого числа со знаком, т.е.
int test = INT_MAX;
test = (test<<1) + 1;
является неопределенным поведением из-за того, что test больше, чем INT_MAX. Но будет ли такое поведение встречаться в коротких...
133 просмотров
schedule
12.04.2022
Почему существуют модификаторы длины hh и h в printf?
В функциях с переменным числом аргументов происходит повышение аргументов по умолчанию.
6.5.2.2.6 Если выражение, обозначающее вызываемую функцию, имеет тип, который не включает прототип, для каждого аргумента выполняется целочисленное повышение,...
98 просмотров
schedule
19.10.2022