简单C奇怪

简单C奇怪,c,C,这一点点C代码快把我逼疯了。它请求输入电压,但随后跳过电阻器1并请求电阻器2。我错过了一些非常明显的东西。。。到底发生了什么事 #include <stdio.h> int main() { float Vin; int R1; int R2; printf("Input Voltage: "); scanf("%.3f", &Vin); printf("\nResistor 1: "); scanf("%d"

这一点点C代码快把我逼疯了。它请求输入电压,但随后跳过电阻器1并请求电阻器2。我错过了一些非常明显的东西。。。到底发生了什么事

#include <stdio.h>
int main() 
{
    float Vin;
    int R1;  
    int R2;

    printf("Input Voltage: ");
    scanf("%.3f", &Vin);

    printf("\nResistor 1: ");
    scanf("%d", &R1);

    printf("\nResistor 2: ");
    scanf("%d", &R2);

    return(0);
}
#包括
int main()
{
浮动Vin;
int R1;
int R2;
printf(“输入电压:”);
scanf(“%.3f”和Vin);
printf(“\nRestor1:”);
scanf(“%d”和&R1);
printf(“\nRestor2:”);
scanf(“%d”和&R2);
返回(0);
}

使用简单的%f。以下是示例:

printf("Input Voltage: ");
scanf("%f", &Vin);

printf("\nResistor 1: ");
scanf("%d", &R1);

printf("\nResistor 2: ");
scanf("%d", &R2);

使用简单的%f。以下是示例:

printf("Input Voltage: ");
scanf("%f", &Vin);

printf("\nResistor 1: ");
scanf("%d", &R1);

printf("\nResistor 2: ");
scanf("%d", &R2);

卸下
.3
部件:

scanf("%f", &Vin);

为输入配置小数位数是没有意义的:)因此,
scanf
不支持它。
float
始终有8位十进制数字。启动编译器的警告级别。

删除
.3
部分:

scanf("%f", &Vin);

为输入配置小数位数是没有意义的:)因此,
scanf
不支持它。
float
始终有8位十进制数字。启动编译器的警告级别。

如果在编译器上打开
-Wall
,则会收到警告:

警告:格式为[-Wformat]的未知转换类型字符“.”

警告:格式[-Wformat extra args]的参数太多


因此,只要从
scanf

中删除.3,如果在编译器上打开
-Wall
,则会收到以下警告:

警告:格式为[-Wformat]的未知转换类型字符“.”

警告:格式[-Wformat extra args]的参数太多


因此,只要从臀部将.3从
scanf

中移除就行了-我的直觉告诉我,第一个
scanf
被你的输入字符串“满足”,还有剩余的输入,第二个
scanf
将所有内容更新到新行


尝试将中的第一个格式字符串替换为
“%f”
,然后查看它是否仍然存在。或者,当你看到愚蠢的行为时,打印出电压和R1的值。不管怎样,在阅读之后,最好还是担心电压输入的舍入/截断。

从臀部开始拍摄-我的直觉告诉我,第一个
scanf
被你的输入字符串“满足”,还有剩余的输入,第二个
scanf
正在将所有内容更新


尝试将中的第一个格式字符串替换为
“%f”
,然后查看它是否仍然存在。或者,当你看到愚蠢的行为时,打印出电压和R1的值。无论如何,在读过之后,担心舍入/截断电压输入可能更好。

几乎没有任何关于这个代码的C++。除了这里没有C++的标题之外,我没有看到C++。我简化了这个。删除C++标签,因为它与问题无关。C++代码是有效的。它只使用<代码> STDIO .H./C>而不是<代码> IoSturi这几乎没有任何关于C++的代码。除了这里没有任何一个头,我没有看到C++。我简化了这个。删除C++标签,因为它与问题无关。C++代码是有效的。它只是使用
stdio.h
而不是
iostream
…为什么?我需要3个小数位你只需要打印出来…为什么?我需要3个小数位你只需要在printf中