Почему функция scanf() считывает несколько целых чисел только с int? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Привет всем, я абсолютный новичок в программировании и мне не понятно, почему функция scanf() при вводе двух целых чисел, не считывает либо первое, либо второе число, когда я объявляю тип данных в переменных не int. Например, когда я пишу char b, x; , то при вводе, допустим 1 2, printf выводит либо 0 2, либо 1 0. В тоже время, если я поменяю спецификатор на %c при char, то уже символы 1 2 выводятся спокойно. Я знаю, что char, как правило, используется для символов, так как диапазон его значений совпадает с АСКИ, но тем не менее для чисел его тоже можно использовать. Та же ситуация и с short.
#include <stdio.h>
 
void main (void)
{
    int   b, x;
 
printf("Enter the number:");
scanf("%d %d", &b, &x);
printf("%d %d", b, x);
   
 return;    
}

Решение задачи: «Почему функция scanf() считывает несколько целых чисел только с int?»

textual
Листинг программы
//char* b = "А пофигу scanf все равно int скопирует, потому что %d";
    //char b;
    //double b;
    int b;
 
    printf("Enter the number:");
    scanf("%d", &b);//здесь вы считываете их адреса в памяти как int 
    printf("%d", b);

Объяснение кода листинга программы

  1. Объявлены три переменные:
    • b типа char* (строка символов)
    • b типа double (число с плавающей точкой)
    • b типа int (целое число)
  2. Выводится сообщение Enter the number: и происходит чтение ввода пользователя с помощью функции scanf().
  3. Форматный спецификатор %d указывает функции scanf() считывать целочисленное значение и сохранять его в переменную b типа int.
  4. Значение, считанное функцией scanf(), затем выводится на экран с помощью функции printf().
  5. Значение, считанное функцией scanf(), не преобразуется в тип double или char*, поскольку в форматном спецификаторе указан тип int.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.6 из 5
Похожие ответы