a16b2e27

Пояснения:


Основные типы 1.1

PRINT(d,"5") Формат %d указывает printf, что аргумент нужно напечатать как десятичное число. Аргумент "5" представляет собой ссылку на массив символов, т.е. адрес массива из двух символов '5' и '\0'.
PRINT(d,'5') %d требует напечатать десятичное значение символа '5'1.
PRINT(d,5) Целое число 5 печатается в десятичном виде.
PRINT(s,"5") Формат %s указывает printf, что аргумент является ссылкой на массив символов. Так как "5" - ссылка на массив символов, то печатается содержимое этого массива, т.е. число 5.
PRINT(c,'5') Формат %c указывает printf, что аргумент нужно рассматривать как значение некоторого символа (его код) и что этот символ нужно напечатать. Так как '5' как раз и есть значение символа, то напечатан будет символ 5.
PRINT(c,53) Десятичное число 53 - это код символа 5 в кодировке ASCII.
PRINT(d,('5'>5) Последней будет напечатана 1, так как '5' имеет большее значение (53), чем целое 5.

1 Значение, которое используется здесь есть значение символа в кодировке ASCII (приложение 3). Кодировка ASCII - одна из возможных кодировок для представления символов там, где необходимо значение символа.

Основные типы 1.2

вначале ax=-8, ux=-8
PRINT(o,sx) %o указывает printf, что аргумент следует напечатать как восьмеричное число.
PRINT(o,ux) Значение -8 представляется как строка из 0 и 1, что верно как для переменных без знака, так и для переменных со знаком.
PRINT(o,sx>>3) С этой трудностью мы сталкивались уже и раньше. В некоторых версиях языка С сдвиг целого со знаком вправо приводит к тому, что знаковый разряд копируется в свободные старшие разряды слова, т.е. знак сохраняется. Однако, внимание, - это свойство зависит от транслятора!
PRINT(o,ux>>3) Когда происходит сдвиг целого без знака вправо, то освободившиеся старшие разряды всегда заполняются нулями.
PRINT(d,sx>>3) Сдвиг на 3 разряда вправо целого со знаком -8 дает ожидаемый результат -1 при условии, что знак сохраняется, и 8191 в противном случае (на 16-разрядной машине с дополнительным кодом).
PRINT(o,ux>>3) Для переменной типа unsigned со значением -8 результат всегда равен 8191 (на 16-разрядной машине).




Начало  Назад  Вперед