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