简单的C奇怪

cod*_*ude 1 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", &R1);

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

    return(0);
}
Run Code Online (Sandbox Code Playgroud)

fre*_*low 5

删除.3部分:

scanf("%f", &Vin);
Run Code Online (Sandbox Code Playgroud)

配置输入的小数位数没有意义:)因此,scanf不支持它.A float总是有8位小数.提高编译器的警告级别.


Rap*_*ptz 5

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

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

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

所以只需删除.3 scanf.