[使用switch语句在C中创建一个简单的计算器时,为什么在输入数字之前必须指定运算符? [重复]

问题描述 投票:0回答:1

案例1:

printf("Enter the operation you want to carry out (+, -, /, *): ");
scanf("%c", &operator);

printf("Enter two numbers: ");
scanf("%lf %lf", &num_1, &num_2);

在这种情况下,程序运行顺利。

案例2:

printf("Enter two numbers: ");
scanf("%lf %lf", &num_1, &num_2);

printf("Enter the operation you want to carry out (+, -, /, *): ");
scanf("%c", &operator);

在这种情况下,输入数字后,它将直接执行程序的其余部分,并显示默认错误消息。

c switch-statement
1个回答
0
投票

因为,根据[手册页](http://man7.org/linux/man-pages/man3/scanf.3.html):

大多数转换会丢弃初始的空白字符(下面会说明例外情况)

其中一个例外是%c

您在终端中按“输入”时输入的换行符是一个字符。当程序正在等待%lf时,它只是将其丢弃,但是对于%c,它将用作接受的输入。

© www.soinside.com 2019 - 2024. All rights reserved.