Вопросы по теме 'integer-promotion'

Сломает ли простой 64-битный int много разумного кода?
До недавнего времени я считал решение большинства разработчиков/поставщиков систем сохранять простые int 32-разрядные версии даже на 64-разрядных машинах своего рода целесообразной бородавкой. С современными типами фиксированного размера C99 (...
674 просмотров
schedule 15.05.2022

Усечение int до char — это определено?
unsigned char a, b; b = something(); a = ~b; Статический анализатор пожаловался на усечение в последней строке, предположительно из-за того, что b повышается до int до того, как его биты перевернуты, и результат будет иметь тип int. Меня...
6881 просмотров
schedule 13.06.2023

хранение короткого знака в младших 16 битах беззнакового целого числа
Я программирую C во встроенной системе. Архитектура процессора 32-битная ( sizeof(int) — 32-битная, sizeof(short) — 16-битная). Существует 32-битная переменная, представляющая собой регистр управления с отображением памяти ( CTRL_REG ), который...
1386 просмотров
schedule 07.04.2022

Почему int sum=ch1+ch2+ch2 не дает переполнения, когда правые операнды являются символьными переменными и результатом 255?
В этой программе я пытаюсь присвоить результат сложения символьных переменных целочисленной переменной. Я убедился, что размер сложения больше 255. Поэтому я ожидаю переполнения выражения справа, и хотя результат равно 362, из-за переполнения я...
153 просмотров
schedule 28.11.2022

Всегда ли unsigned char повышается до int?
Предположим следующее: unsigned char foo = 3; unsigned char bar = 5; unsigned int shmoo = foo + bar; Гарантировано ли, что значения foo и bar будут повышены до значений int для оценки выражения foo + bar , или реализациям разрешено...
2720 просмотров

Побитовое отрицание беззнакового символа
Это вопрос, относящийся к стандарту c99 и касающийся продвижения целых чисел и побитового отрицания беззнакового символа. В разделе 6.5.3.3 говорится, что: Целочисленные продвижения выполняются над операндом, и результат имеет продвигаемый...
2027 просмотров
schedule 04.06.2022

битовое представление unsigned int a = -1
Каково битовое представление unsigned int x =-1; . Можем ли мы присвоить unsigned int отрицательное целое число? #include<stdio.h> int main(){ unsigned int x = -1; int y = ~0; if(x == y) printf("same"); else...
3536 просмотров
schedule 15.05.2022

Автоматически продвигаются ли символы в выражениях C?
Я сделал заявление своему коллеге, которое было: "символы автоматически преобразуются в целые числа в выражениях C, и это нормально для производительности, поскольку процессоры работают быстрее всего с их естественным размером слова. Я...
420 просмотров
schedule 27.07.2022

Арифметическое преобразование VS интегральное продвижение
char cval; short sval; long lval; sval + cval; // sval and cval promoted to int cval + lval; // cval converted to long Это фрагмент кода на C ++ Primer. Я знаю, что sval+cval генерирует тип int в соответствии с преобразовать малые...
1625 просмотров
schedule 07.07.2023

Побитовое или перед приведением к int32
Я возился с массивами и заметил это. НАПРИМЕР: int32_t array[]; int16_t value = -4000; Когда я попытался записать значение в верхнюю и нижнюю половину значения массива int32, array[0] = (value << 16) | value; компилятор...
303 просмотров
schedule 24.06.2023

тип беззнакового короткого вычитания
у меня есть короткая программа, которая не компилируется: #include <algorithm> int main(int argc, char *argv[]) { unsigned short a = 490; unsigned short b = 43; unsigned short d = std::min(b, a-b);...
271 просмотров
schedule 09.11.2022

С++ неоднозначный вызов перегруженной функции с целым числом без знака
Это кажется непоследовательным. У меня есть 3 функции f , перегруженные для подписанных типов short , int и long long . Если вы передадите unsigned short , то он будет повышен до следующего крупнейшего подписанного типа int . Однако, если вы...
3248 просмотров
schedule 25.05.2023

Операция сдвига влево для 8-битного целого числа без знака
Я пытаюсь понять операторы сдвига в C/C++, но они доставляют мне неприятности. У меня есть 8-битное целое число без знака, инициализированное значением, например, скажем, 1. uint8_t x = 1; Насколько я понимаю, в памяти он представлен как...
338 просмотров

Повышения и преобразования переменных в printf()
В этом случае, #include <stdio.h> int main() { unsigned char a = 1; printf("%hhu", -a); return 0; } Аргумент -a в printf повышается до int путем целочисленного преобразования с помощью унарного оператора...
69 просмотров