Как правильно распечатать переменные в C? - PullRequest
0 голосов
/ 17 февраля 2019

Сегодня я впервые использую C и попробовал некоторые вещи, такие как if, getchar () и т. Д. Но теперь моя проблема в том, что мой третий printf () в моем коде печатает что-то, чего не должен.Но я не знаю, где проблема.

Цикл должен принимать целое число c и добавлять '1' при каждом проходе.Но когда я ввожу '5', цикл печатает:

You entered: 54
You entered: 55
You entered: 56
You entered: 57
You entered: 58
You entered: 59
You entered: 60
You entered: 61
You entered: 62
You entered: 63
You entered: 64
You entered: 65
You entered: 66
You entered: 67

Но он должен напечатать что-то вроде этого:

You entered: 6
You entered: 7
You entered: 8
You entered: 9
You entered: 10
You entered: 11
You entered: 12
You entered: 13
You entered: 14
You entered: 15
You entered: 16
You entered: 17
You entered: 18
You entered: 19

Мой код

#include <stdio.h>
int main()
{
    printf("Enter a value!: ");
    int c = getchar();
    printf("You entered: %c\n", c);

    int x = 1;

    while(x < 15) {
     x++;
     c++;
     printf("You entered: %d\n", c);
    }

    return 0;
}

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

Когда вы используете getchar() для сканирования числа, вы сканируете его как символ.Таким образом, переменная хранит значение ascii из 5 , которое равно 53 .Поэтому, когда вы печатаете значение c с использованием %d, оно печатает значение ascii c.Поскольку вы увеличиваете значение на 1 перед печатью, оно печатается You entered: 54 (53 + 1).Чтобы получить 5, вам нужно подставить значение ascii '0', которое равно 48 из c.Вы можете заменить свой третий printf любым из двух приведенных ниже примеров.Оба будут работать нормально.

printf("You entered: %d\n", c-'0');

или

printf("You entered: %d\n", c-48);
0 голосов
/ 17 февраля 2019

Смешение чисел с представлениями этих чисел является очень распространенной ошибкой программирования.Это совершенно разные вещи.Пять - это то же число, пишем ли мы его как «пять», «5» или «IIIII».Но это очень разные последовательности символов, которые представляют это число.

Число пять, количество пальцев, которые вы, вероятно, имеете на каждой руке, не то же самое, что символ «5», обычно используемый для представленияэтот номер.Вы читаете символы, а затем выводите их, как если бы они были числами.

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