Вопросы по теме 'integer-promotion'
Пример использования getopt (). Сравнение int с char
Привет всем, надеюсь, вы поможете мне понять, почему getopt использовал int и как обрабатывается переменная optopt в getopt. Довольно новичок в C ++.
Если посмотреть на getopt, optopt определяется как целое число....
2673 просмотров
schedule
20.09.2021
Почему этот вызов функции неоднозначен?
Я читаю стандарт и пытаюсь понять, почему этот код не будет разрешен без приведения.
void foo(char c) { }
// Way bigger than char
void foo(unsigned long int) { }
int main()
{
foo(123456789); // ambiguous
foo((unsigned long int) 123456789);...
2065 просмотров
schedule
09.11.2021
Почему имеет значение, используются ли сдвиги влево и вправо вместе в одном выражении или нет?
У меня такой код:
unsigned char x = 255;
printf("%x\n", x); // ff
unsigned char tmp = x << 7;
unsigned char y = tmp >> 7;
printf("%x\n", y); // 1
unsigned char z = (x << 7) >> 7;
printf("%x\n", z); // ff
Я ожидал,...
1192 просмотров
schedule
14.10.2021
что быстрее, mov или movzx в сборке?
Узнав о целочисленном продвижении, я придумал два кода, потому что мне было любопытно, как целочисленное продвижение будет происходить на языке ассемблера.
#include <stdio.h>
int main(void) {
short a = 5;
short b = 9;
short p =...
76 просмотров
schedule
13.09.2021
Что происходит с поразрядными операторами и целочисленным продвижением?
У меня простая программа. Обратите внимание, что я использую беззнаковое целое число фиксированной ширины размером 1 байт.
#include <cstdint>
#include <iostream>
#include <limits>
int main()
{
uint8_t x = 12;...
6818 просмотров
schedule
23.02.2022
Комплексное продвижение и оператор + =
Мне нужно устранить предупреждения gcc -Wconversion. Например
typedef unsigned short uint16_t;
uint16_t a = 1;
uint16_t b = 2;
b += a;
дает
warning: conversion to 'uint16_t {aka short unsigned int}' from 'int' may alter its value...
187 просмотров
schedule
12.03.2022
Добавление двух символов дает int
Я сделал простую программу и скомпилировал ее с помощью GCC 4.4/4.5 следующим образом:
int main ()
{
char u = 10;
char x = 'x';
char i = u + x;
return 0;
}
g++ -c -Wconversion a.cpp
И у меня есть следующее:
a.cpp: In function...
11152 просмотров
schedule
02.04.2022
Портативный способ получить int32_t, переданный в функцию с переменным числом аргументов
7.16.1.1 2 описывает va_arg следующим образом (выделено мной):
Если фактического следующего аргумента нет или если тип несовместим с типом фактического следующего аргумента (как продвигается в соответствии с продвижением аргумента по...
1157 просмотров
schedule
20.04.2022
введите продвижение в C
Меня очень смущает следующий код:
#include <stdio.h>
#include <stdint.h>
int main(int argc, char ** argv)
{
uint16_t a = 413;
uint16_t b = 64948;
fprintf(stdout, "%u\n", (a - b));
fprintf(stdout, "%u\n", ((uint16_t)...
8870 просмотров
schedule
06.05.2022
Целочисленное продвижение — какие шаги
Этот код печатает B2
short a=-5;
unsigned short b=-5u;
if(a==b)
printf("A1");
else
printf("B2");
Я читал о целочисленном продвижении, но мне все еще непонятно, как это работает в примере здесь? Может ли кто-нибудь подробно...
3903 просмотров
schedule
06.05.2022
Почему реализации stdint.h расходятся в определении UINT8_C?
Макрос UINT8_C определен в "stdint.h" со следующей спецификацией : Макрос UINTN_C(value) должен расширяться до целочисленного константного выражения, соответствующего типу uint_leastN_t .
Однако в дикой природе реализации различаются:...
1048 просмотров
schedule
08.07.2022
Вопрос об обычных арифметических преобразованиях - компилятор GCC
Я пытаюсь понять неявные преобразования типов данных в C. Я думал, что понял эту тему, но все же следующий пример кода все еще сбивает меня с толку.
В частности, я читал об обычных арифметических преобразованиях и преобразовании целых чисел ранее...
104 просмотров
schedule
18.09.2022
Будут ли char и short повышены до int перед понижением в выражениях присваивания?
После некоторого исследования, которое я знаю в арифметических выражениях, char и short будут переведены в int внутренне. Но мне все еще интересно, будут ли подобные целочисленные продвижения происходить при внутреннем назначении.
(Поэтому,...
498 просмотров
schedule
24.09.2022
Почему целые типы продвигаются во время сложения в C?
Итак, у нас возникла проблема с полем, и после нескольких дней отладки мы сузили проблему до этого конкретного фрагмента кода, где обработка в цикле while не происходила:
// heavily redacted code
// numberA and numberB are both of uint16_t
//...
2943 просмотров
schedule
15.06.2023
Преобразование большого конца в С++?
Мне нужна функция C++, которая возвращает значение четырех последовательных байтов, интерпретируемых как bigendian long. Указатель на первый байт должен быть обновлен так, чтобы он указывал после последнего. Я пробовал следующий код:
inline...
366 просмотров
schedule
27.06.2023
Тип char умножается на другой char
Каков тип результата умножения двух символов в C/C++?
unsigned char a = 70;
unsigned char b = 58;
cout << a*b << endl; // prints 4060, means no overflow
cout << (unsigned int)(unsigned char)(a*b) << endl; // prints 220,...
1386 просмотров
schedule
14.10.2022
целочисленное продвижение в c
Допустим, у меня есть 32-разрядная машина.
Я знаю, что во время целочисленного преобразования выражения преобразуются в:\
int если все значения исходного типа могут быть представлены в int
unsigned иначе
Не могли бы вы...
3736 просмотров
schedule
30.10.2022
Сравнение результатов после целочисленного продвижения
Следующая ситуация:
У меня есть макросы для хранения дополнения переменной вместе с ее исходным значением в структуре. С помощью другого макроса я хочу проверить, равно ли исходное значение дополнению сохраненного значения дополнения. Но, как ни...
77 просмотров
schedule
30.12.2022
Есть ли активные предложения по изменению интегральных правил продвижения?
Как уже обсуждалось здесь , интегральные правила продвижения могут вызывать головную боль в некоторых случаях (особенно для арифметических операций между знаковыми и беззнаковыми типами). В конце этого ответа есть ссылка на предложение. Однако...
72 просмотров
schedule
30.05.2023
Какие комплексные акции имеют место при печати char?
Я недавно прочитал это
unsigned char x=1;
printf("%u",x);
вызывает неопределенное поведение, поскольку из-за спецификатора формата% u printf ожидает беззнаковое int. Но все же хотелось бы понять, что происходит в этом примере.
Я думаю,...
347 просмотров
schedule
25.02.2024