我们可以在开关盒中输入吗? AS在这里,如果我运行代码,因为它要求值'a'但它返回区域为0。 但是,如果我在声明时或在开关案例之外的任何地方定义'a'的值,它将返回正确的值。
double a, area;
switch(ch)
{
case 1: printf("equilateral triangle \n");
printf("value of side \n");
scanf("%f",&a);
area= 0.433*a*a;
printf("\n %f", area);
break;
default : break;
}
答案 0 :(得分:0)
是的,你可以。您得到错误的结果,因为您使用了double
的错误说明符。请改为使用%lf
(scanf
)。
查看正在运行的代码here。
答案 1 :(得分:0)
使用switch
- case
没有问题。但是你必须使用:
scanf("%lf",&a);
因为a
被声明为double。
对于采用printf()
等可变参数的函数,类型为float
的参数可以提升为double
。
但是,C不会提升指针,因为scanf()
将指针作为参数,所以它不会被提升为指向double的指针。
答案 2 :(得分:0)
在声明时使用%d,而不是%f(在scanf中)和%f在printf()中,使用%lf。