-2
对不起,这一直困扰着我几个小时,没有什么关于这个谷歌出现。我在C编程,试图将十进制转换为二进制,我很困惑,为什么这会一直给我正确的数量作为输入,但整数值始终是0.为什么将这个double赋值给一个int给我0?
即使我正确地投入输入为一个int,它不工作(即:INT整数=(int)的输入; - >scanf()
或打印 - 因为你使用了错误的说明符读取
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
你实际上*不*有正确的值作为双。你所拥有的是一个int值,它已经被塞进了一个double变量,因为你使用了错误的scanf格式。然后您尝试再次使用错误的格式进行打印,因此它被解释为一个“int”,并恰好显示您的预期。但是,作为一个“双”,它的价值与你所期望的完全不同(所有这些都是未定义的行为)。提示:修复您的编译器警告。在您的代码编译无警告之前,您不应该发布关于为什么它不起作用的问题。 –