Прогнозировать выход следующих программ на Си.
Вопрос 1
|
В приведенном выше примере мы создали массив из 5 элементов, элементы которого имеют степень десяти (т.е. 1, 10, 100, 1000 и 10000), и мы печатаем эти элементы с помощью простого цикла for. Таким образом, мы ожидаем, что выход вышеупомянутой программы будет «1 10 100 1000 и 10000», но вышеупомянутая программа не показывает этот вывод, вместо этого он показывает
"1 8 64 512 10000"
Давайте обсудим вышеупомянутую программу более подробно. Внутри массива мы объявили элементы, которые начинаются с «0», и это восьмеричное представление десятичного числа (подробнее см. Этот GFact ).
Вот почему все эти числа в восьмеричном представлении. «010» является восьмеричным представлением десятичной дроби «8», «0100» является восьмеричным представлением десятичной дроби «64» и так далее.
Последний элемент «10000», который не начинается с «0», поэтому он находится в десятичном формате и печатается как есть.
вопрос 2
|
На первый взгляд, похоже, что приведенная выше программа выдаст ошибку компиляции, но она будет работать нормально (но выдаст предупреждение компиляции). Внимательно соблюдайте вышеуказанную программу, в этой программе «http:» будет рассматриваться как метка goto, а две косые черты будут действовать как однострочный комментарий. Поэтому программа будет работать правильно.
Вопрос 3
|
В вышеприведенной программе макрос «ARRAY_SIZE» подставляет выражение, чтобы получить общее количество элементов, присутствующих в массиве, и мы печатаем эти элементы с помощью цикла for. Но программа ничего не печатает. Давайте посмотрим, что не так с кодом.
Значение, возвращаемое замещенным выражением, имеет формат unsigned int, и внутри цикла for мы сравниваем unsigned 5 со -1. В этом сравнении -1 переводится в целое число без знака. -1 в формате без знака представляется как все его биты установлены в 1 (т. Е. 0xffffffff), что является слишком большим числом
После подстановки значения макроса цикл выглядит следующим образом.
для (я = -1; 0xffffffffВ вышеприведенном цикле действительно 0xffffffff не меньше 5, поэтому условие цикла не выполняется, и программа выходит из цикла, ничего не печатая.
Эта статья составлена Нарендрой Кангралкар . Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.
Рекомендуемые посты:
- Вывод программы C ++ | Набор 10
- Выход программы C | Комплект 22
- Вывод программы C ++ | Комплект 8
- Вывод программы C ++ | Комплект 9
- Вывод программы C ++ | Набор 7
- Выход программы C | Набор 21
- Вывод программы C ++ | Комплект 6
- Вывод программы C ++ | Комплект 5
- Вывод программы C ++ | Набор 4
- Выход программы C | Комплект 20
- Выход программы C | Набор 23
- Вывод программы C ++ | Комплект 18
- Вывод программы C ++ | Набор 17
- Вывод программы C ++ | Набор 16
- Вывод программы C ++ | Набор 15
0.00 (0%) 0 votes