Зачем здесь нужен sizeof(char) - C (СИ)
Формулировка задачи:
Всем доброго времени суток
Программа расчета простого арифметического выражения на основе оператора switch.
Зачем здесь нужен sizeof(char)? Не понимаю. Без него программа не работает.
#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)»
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 ввод осуществляется следующим образом:
- Вводится значение
value1(должно быть действительным числом с плавающей точкой). - Вводится оператор
operat(может быть любым символом, включая пробел). - Вводится значение
value2(должно быть действительным числом с плавающей точкой). При использованииscanfввод осуществляется аналогичным образом, но без проверки корректности ввода. В конце ввода программа выполняет действия в зависимости от введенных значений и оператора. Код, который выполняет эти действия, не представлен в данном вопросе.