Зачем здесь нужен sizeof(char) - C (СИ)

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

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

Всем доброго времени суток Программа расчета простого арифметического выражения на основе оператора switch.
#include <stdio.h>
#include <conio.h>
 
int main (void) {
    float value1, value2;
    char operat;
    
     printf("\n\t Printed on the keyboard expression: ");
scanf_s("%f%c%f", &value1, &operat, sizeof(char), &value2);
 
     switch (operat) {
    
     case '+':
        printf("\n\t Result: %1.4f\n", value1 + value2);
        break;
    
     case '-':
        printf("\n\t Result: %1.4f\n", value1 - value2);
        break;
    case '*':
        printf("\n\t Result: %1.4f\n", value1 * value2);
        break;
    
     case '/':
        if (value2 == 0.0)
        printf("\n\t Division by zero.\n");
        else
          printf("\n\t Result: %1.4f\n", value1 / value2);
        break;
    
     default:
        printf("\n\t Unknown arithmetic operator\n\t error or enter a number. Break!\n");
        break;
 
    } // End switch
 
    printf("\n Press any key: ");
    _getch();
    return 0;  
}
Зачем здесь нужен sizeof(char)? Не понимаю. Без него программа не работает.

Решение задачи: «Зачем здесь нужен sizeof(char)»

textual
Листинг программы
#ifdef __DEBUG__
scanf_s("%f%c%f", &value1, &operat, sizeof(char), &value2);
#else
scanf("%f%c%f", &value1, &operat, &value2);
#endif

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

В данном коде выполняется ввод трех чисел с плавающей точкой из стандартного ввода. В зависимости от того, определен ли макрос __DEBUG__, ввод осуществляется с использованием функции scanf_s, которая проверяет корректность ввода и может пропустить некорректный ввод, или без использования этой функции, с использованием функции scanf, которая не выполняет проверку корректности ввода. При использовании scanf_s ввод осуществляется следующим образом:

  1. Вводится значение value1 (должно быть действительным числом с плавающей точкой).
  2. Вводится оператор operat (может быть любым символом, включая пробел).
  3. Вводится значение value2 (должно быть действительным числом с плавающей точкой). При использовании scanf ввод осуществляется аналогичным образом, но без проверки корректности ввода. В конце ввода программа выполняет действия в зависимости от введенных значений и оператора. Код, который выполняет эти действия, не представлен в данном вопросе.

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


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

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

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