Сейчас на форуме: tyns777, localhost1, vsv1, asfa (+5 невидимых) |
eXeL@B —› Вопросы новичков —› Невозможно вывести 8-ричное число в языке программирования Си при помощи printf |
Посл.ответ | Сообщение |
|
Создано: 16 марта 2020 20:32 · Поправил: FOXHACKBOK · Личное сообщение · #1 Господа, столкнулся с такой проблемой, от которой я сам в шоке, если честно. Короче говоря, проблема вот в чем: Создал переменную unsigned long long int oct = 1777777777777777777777; с длинным значение, ну дк вот, в калькуляторе в режиме "Программист" выбрав систему счисления "OCT" - число 1777777777777777777777 - это -1(FFFFFFFFFFFFFFFF) Вывожу число при помощи функции printf("%llu",oct); и выводится не то число, которое нужно. Выводится 6890346701660822641 , а должно быть -1. Я знаю, что данное число 64 битное, так что не пишите мне что я этого не знал. #include <stdio.h> void main(){ unsigned long long int oct = 1777777777777777777777; printf("%llu",oct); return; } Компилировал в Code::Blocks! Так что, вот такая я вот проблема. |
|
Создано: 16 марта 2020 20:36 · Личное сообщение · #2 |
|
Создано: 16 марта 2020 20:38 · Личное сообщение · #3 |
|
Создано: 16 марта 2020 20:49 · Личное сообщение · #4 |
|
Создано: 16 марта 2020 20:49 · Поправил: Bronco · Личное сообщение · #5 |
|
Создано: 16 марта 2020 20:53 · Личное сообщение · #6 f13nd пишет: Ты наверное еще сильней удивившься узнав, что в 8-ричной системе число может быть представлено пользователю, но в переменной лежит просто число. Функция printf() в соответствии с маской "%llu" тебе его выводит. В любом случае должно быть значение -1, потому как число 1777777777777777777777 находится в диапазоне 64 битах, так что все равно должно вывестись -1, а не то что ты сказал. Добавлено спустя 5 минут Bronco пишет: а если так вывести - printf("0x%llx", test/*uint64_t*/)); сорян, не весь пост увидел. unsigned long long int - это и есть 64 битное значение (8 байт) |
|
Создано: 16 марта 2020 21:03 · Личное сообщение · #7 |
|
Создано: 16 марта 2020 21:05 · Личное сообщение · #8 |
|
Создано: 16 марта 2020 21:07 · Личное сообщение · #9 |
|
Создано: 16 марта 2020 21:09 · Личное сообщение · #10 А если написать unsigned long long int oct = 01777777777777777777777; ? | Сообщение посчитали полезным: FOXHACKBOK |
|
Создано: 16 марта 2020 21:10 · Личное сообщение · #11 |
|
Создано: 16 марта 2020 21:13 · Личное сообщение · #12 |
|
Создано: 16 марта 2020 21:13 · Личное сообщение · #13 |
|
Создано: 16 марта 2020 21:15 · Поправил: FOXHACKBOK · Личное сообщение · #14 user99 пишет: И как тогда компилятор должен понять, что вы указывает восьмеричное число? Есть максимальный диапазон, и число 1777777777777777777777 находится на максимальном диапазоне, то есть максимальное 64 битное значение Добавлено спустя 3 минуты Это все равно что написать бинарное максимальное число 1111111111111111111111111111111111111111111111111111111111111111 и выведется -1 |
|
Создано: 16 марта 2020 21:19 · Личное сообщение · #15 |
|
Создано: 16 марта 2020 21:20 · Поправил: FOXHACKBOK · Личное сообщение · #16 |
|
Создано: 16 марта 2020 21:22 · Личное сообщение · #17 |
|
Создано: 16 марта 2020 21:22 · Личное сообщение · #18 FOXHACKBOK пишет: Даже ставить не буду, потому как ноль отсекается на выводе. По опыту знаю Диагноз: либо тролль, либо клиника и не лечится | Сообщение посчитали полезным: Orlyonok |
|
Создано: 16 марта 2020 21:25 · Поправил: FOXHACKBOK · Личное сообщение · #19 Orlyonok пишет: FOXHACKBOK, откройте букварь по Си и почитайте и про задание числовых констант, и про формат printf Зачем вообще тупыми вопросами засорять форум? Ты ответь на вопрос, потом будешь про тролинги говорить, не надо сваливать свои не знания на тролинги, Братан Добавлено спустя 1 минуту user99 пишет: Диагноз: либо тролль, либо клиника и не лечится Запусти компилятор, включи мозг, и ответь на данную задачу, и не надо срать тему своими школьными комментами Добавлено спустя 3 минуты Orlyonok пишет: FOXHACKBOK, откройте букварь по Си и почитайте и про задание числовых констант, и про формат printf Зачем вообще тупыми вопросами засорять форум? Это не тупой вопрос, раз ты ответить не можешь, логично? Добавлено спустя 13 минут Короче, я прогнал через отладчик, да, и число 1777777777777777777777 не помещается в 8-байтовый размер, потому как число выводится 77777777777777771 77777777 - 4 байта 77777777 - 4 байта 1 - вне диапазона |
|
Создано: 16 марта 2020 22:12 · Личное сообщение · #20 |
|
Создано: 16 марта 2020 22:15 · Поправил: FOXHACKBOK · Личное сообщение · #21 Alchemistry пишет: а с какого форума ты пришел что у вас там принято так набивать посты?) пока получается прямо наоборот. заодно, ты отдаешь себе отчет в том, что уже выглядишь как конченный даун с этой темой?) К, сожалению, ты д*ун, потому как решить это не можешь Так что иди умойся, включи мозг, запусти компилятор, отладчик, может тогда у тебя будет хоть что-то умное, если, конечно, ты еще умеешь хоть что-то делать. Добавлено спустя 2 минуты Чуть что, сразу тролинг, я в шоке с Вас, не со всех, но с некоторых. Школьных терминов где-то набрались, и теперь болтают, когда решить не могут ничего. Добавлено спустя 4 минуты Я вот, серьезна, лайк поставлю тому, кто решит эту задачу, причем на каждом его посте. |
|
Создано: 16 марта 2020 22:38 · Личное сообщение · #22 Не знаю все ли правильно прочитал, но https://ideone.com/Oz80U0 #include <stdio.h> int main(void) { long long int oct = 01777777777777777777777; printf("%lld\n", oct); return 0; } выводит ожидаемый -1 ----- 127.0.0.1, sweet 127.0.0.1 | Сообщение посчитали полезным: FOXHACKBOK |
|
Создано: 16 марта 2020 22:40 · Поправил: FOXHACKBOK · Личное сообщение · #23 OKOB пишет: Не знаю все ли правильно прочитал, но https://ideone.com/Oz80U0 #include <stdio.h> int main(void) { long long int oct = 01777777777777777777777; printf("%lld\n", oct); return 0; } выводит ожидаемый -1 Выводися не -1 , а другое число Скомпилируй в Code::Blocks!!! Добавлено спустя 17 минут Да, все, точно, надо 0 было добавить, так что, все верно, спасибо! Добавлено спустя 18 минут Щас лайки поставлю тому, кто первый написал это. Добавлено спустя 20 минут Странно вообще, обычно 0 отсекается от значения, странно, странно |
|
Создано: 16 марта 2020 23:26 · Поправил: dosprog · Личное сообщение · #24 FOXHACKBOK пишет: Выводися не -1 , а другое число Code:
Code:
| Сообщение посчитали полезным: FOXHACKBOK |
|
Создано: 16 марта 2020 23:32 · Личное сообщение · #25 |
|
Создано: 16 марта 2020 23:40 · Личное сообщение · #26 Мдя FOXHACKBOK пишет: Даже ставить не буду ... По опыту знаю FOXHACKBOK пишет: Запусти компилятор, включи мозг FOXHACKBOK пишет: К, сожалению, ты д*ун А потом внезапно FOXHACKBOK пишет: Да, все, точно, надо 0 было добавить Вспомнилось: Отец и сын-дебил стоят на берегу моря. - Вот, сынок, это море. - Где? - Вот это, уходящее в небо, голубое пространство, все это море... - Где? - Видишь, волны играют, чайки снуют туда-сюда, блики от солнца, в дали белый пароходик, запах, непередаваемый запах!... Все это - море! - Где? Отец психует, хватает дебила-сына за загривок и несколько раз макает его башкой в воду: - Вот море! Вот море! Вот море! Вот море! Вот море! Вот море! - Ой, папа, что это было?! - Море, сынок... - Где? | Сообщение посчитали полезным: Lambda, _MBK_, Orlyonok |
|
Создано: 17 марта 2020 07:16 · Личное сообщение · #27 Приехал в аул доктор технических наук читать лекцию по кибернетике. После двух часов лекции он обратился к аксакалам - понятна ли им лекция и есть ли у них вопросы. Встал самый старый аксакал и говорит, что про кибернетика-мибернетика им все понятно. Но есть другой вопрос. - Ты, - говорит, - уважаемый, знаешь конфеты "подушечка"? Лектор: - Знаю! - Так вот скажи, как туда внутрь варенье попадает? |
|
Создано: 17 марта 2020 08:23 · Личное сообщение · #28 Последнего предупреждения было мало, видимо. Пора автору и отдохнуть. | Сообщение посчитали полезным: user99 |
eXeL@B —› Вопросы новичков —› Невозможно вывести 8-ричное число в языке программирования Си при помощи printf |
Эта тема закрыта. Ответы больше не принимаются. |