Палец вверх 0
Перевод
Перевод

Несколько вопросов, касающихся простого кода программирования c

Я только недавно начал изучать программирование в своей школе и наткнулся на простые препятствия. Я называю это простым, потому что я чувствую, что решение тут же, но просто не могу заставить его работать.

Вопрос 1: я пытаюсь, чтобы человек ввел 2 переменные, одну для X и одну для Y. Я научился использовать char c; c = getchar(); char c; c = getchar(); и scanf_s("%d", &n);

Мне интересно, смогу ли я использовать любую из этих двух, чтобы человек мог вводить 2 разные переменные для X и Y. Я также видел в Интернете, что иногда людей просят ввести: xy (с пробелом между ними) и Затем код распознает первый ввод как x, а ввод после пробела как y.

Второй вопрос заключается в том, что я попытался с помощью команды x>>31 показать 32-битный двоичный код значения x, но я получаю вывод 0. Любая подсказка, как это исправить? например, у меня есть строка кода: printf("%d & %d = %d %d\n", num1, num2, result1, result1>>31); но последний% d показывает 0 вместо 32-битного двоичного кода result1 . картина моего кода и вывод я получаю

c
задан Robert 2 мая 2018 г., 18:26:10
источник

1 ответ

Палец вверх 0
Перевод
Перевод

Re: scanf, предлагаю прочитать документацию по функции. Эта страница предназначена для Visual Studio 2015, но примеры должны помочь вам в использовании любой IDE:

https://msdn.microsoft.com/en-us/library/w40768et.aspx

Вы не понимаете, что делает оператор ">>". (result1 >> 31) сместит result1 вправо на 31 бит. Это приведет к 0 для 32-битного значения, если оно не является беззнаковым и очень большим (более 2 ^ 31, что составляет около 4 миллиардов, в этом случае это приведет к 1) или со знаком и отрицательным, и в этом случае я верю разрешается до -1.

Вы можете использовать >>, чтобы показать двоичное представление числа, но вам нужно будет использовать его несколько раз для извлечения каждого бита. 0, который вы видите, является первым битом 32-битного значения.

Я бы посоветовал вам начать с вывода каждого бита в отдельной строке, чтобы вы могли видеть, что делает код, прежде чем выводить их конкатенацию вместе в одно 32-значное число.

ответ дан Dave Knight 2 мая 2018 г., 18:37:53
источник