为什么将这个double转换为int会给我0?

时间:2016-02-07 20:20:45

标签: c casting

对不起,这让我困惑了几个小时,谷歌没有任何关于此事的消息。我在C编程,尝试将十进制转换为二进制,我很困惑为什么这一直给我输入正确的数量,但整数值始终为0.

即使我正确地将输入转换为int,它也不起作用(即:int integer =(int)input;

main() {
double input;
scanf("%d", &input);
printf("input: %d \n", input);  // this will print fine
int integer = input;            // stores nums before decimal
printf("integer:%i\n", integer);   // this always prints 0

2 个答案:

答案 0 :(得分:2)

因为您使用了错误的说明符来阅读 - > scanf()或打印 - > printf() double,执行此操作

if (scanf("%lf", &input) == 1)
{
    printf("input: %f\n", input);
    printf("integer: %d\n", (int) input);
}

答案 1 :(得分:1)

  

您需要更正格式说明符。

main(){
    double input;
    scanf("%lf",&input);
    printf("input: %lf \n", input);
    int integer = input;  
    printf("integer:%i\n", integer); }

Some Format Specifiers

或者您可以阅读here