моя программа печатает произвольную строку ascii - PullRequest
2 голосов
/ 16 июня 2011

Я написал следующую программу

int main ()
{
char a=0xf;
a=a+1;
printf("%c\n",a);
}

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

EDIT

Основываясь на ответах, которые я прочитал, я добавляю еще больше к своей путанице

если я напишу заявление следующим образом

char ch = 'Z';

тогда что будет храниться в ch,

1) Персонаж Z
2) значение ASCII Z
3) Z вместе с одиночными кавычками
4) Оба (1) и (2)

Ответы [ 5 ]

2 голосов
/ 16 июня 2011

ASCII-значение для 16 (0x0f + 1 = 0x10) равно DLE (data link escape), что является непечатным символом. Просто напишите как целое число вот так.

printf("%d\n",a);
1 голос
/ 16 июня 2011

Вы можете изменить свою программу следующим образом:

int main ()
{
  char a=0xf;
  a=a+1;
  printf("Decimal:%u Hexa:%x Actual Char:|%c|\n",a,a,a);
}

Printf может использовать различное форматирование для символа.

1 голос
/ 16 июня 2011

Символы от 0 до 31 являются непечатными (в вашем случае вы выбрали 0xF, что составляет 15 в десятичном виде).Многие из малоизвестных были разработаны для телетайпов и другого древнего оборудования.Попробуйте персонаж от 32 до 126 вместо.Подробнее см. http://www.asciitable.com.

В ответ на ваш второй вопрос, символ хранит десятичное значение 90 (поскольку символы на самом деле являются 1-байтовыми целыми числами).'Z' - это просто запись о том, что Z должен восприниматься как символ, а не как переменная.

0 голосов
/ 16 июня 2011
#include<stdio.h>

int main ()    
{

    char a='z';                 \\\ascii value of z is stored in a i.e 122

    a=a+1;   \\\a now becomes 123

    printf("%c",a);   \\\ 123 corresponds to character '{' 

}
0 голосов
/ 16 июня 2011

На нем печатается символ 0x10 (16).

Если вы хотите вывод, измените ваш отпечаток, чтобы вывести значения (в данном случае символ, шестнадцатеричное значение, десятичное значение):

printf("%c - %x - %d\n", a, a, a);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...