Я изучаю целочисленные переполнения и потери значимости, и мне было интересно, можно ли контролировать значение j, вводя отрицательный ввод n?
int i = n;
size_t j = i;
printf("%lu",j);
например, если я хочу, чтобы значение «j» было равно 255, можно ли создать отрицательное число «n», чтобы получить этот результат?
n
на 255. :-P - person Charles Srstka   schedule 20.09.2017n
на255
. Простота и банальность ответа наводит на мысль, что вы что-то упустили в своем вопросе. - person AnT   schedule 20.09.2017n
? В любом случае, невозможно ответить на вопрос об отрицательном значенииn
, не зная точных характеристик типаsize_t
(в частности, его диапазона). Это зависит от платформы. И вы должны использовать%zu
для печатиsize_t
значений, а не%lu
. - person AnT   schedule 20.09.2017unsigned long
по-прежнему зависит от реализации, что делает невозможным ответ на ваш вопрос без изучения всех возможных комбинаций. - person AnT   schedule 20.09.2017-1
, кuint8_t
, вы получите255
. Однако255
меньше, чем0x8000
, поэтому я не думаю, что вы сможете получить его, приведя отрицательное значение к любому целочисленному типу, превышающему 8 бит. И само собой разумеется, я не думаю, что вы найдете какие-либо современные платформы (или древние, если на то пошло), на которыхunsigned long
имеет размер всего 8 бит. - person Charles Srstka   schedule 20.09.2017int
и 32-битнойsize_t
это было бы вполне возможно. Установкаi
в-9223372036854775553
приведет к255
вj
. Но правда, еслиint
не шире, чемsize_t
, то отрицательное значение вi
никогда не даст255
вj
. - person AnT   schedule 20.09.2017int
было бы больше, чемsize_t
. - person Charles Srstka   schedule 20.09.2017unsigned long
должно быть не менее 32 бит. - person M.M   schedule 20.09.2017underflow
? Пожалуйста, удалите всеunderflow
слова из заголовка и вопроса. - person Abhineet   schedule 20.09.2017