簡體   English   中英

如何在C中乘以浮點數和整數?

[英]How to multiply float with integers in C?

當我執行此代碼時,它返回1610612736

void main(){
float a=3.3f;
int b=2;
printf("%d",a*b);
}

為什么以及如何解決這個問題?

編輯:它甚至不是整數和浮點數的問題,如果我替換int b = 2:浮點數b = 2.0f它返回相同的愚蠢結果

floatint相乘的結果是float 除此之外,它將在傳遞給printf時被提升為double 您需要%a%e%f%g格式。 %d格式用於打印int類型。

編者注: main的返回值應為int 這是一個固定的程序:

#include <stdio.h>

int main(void)
{
    float a = 3.3f;
    int b = 2;
    printf("%a\n", a * b);
    printf("%e\n", a * b);
    printf("%f\n", a * b);
    printf("%g\n", a * b);
    return 0;
}

及其輸出:

$ ./example 
0x1.a66666p+2
6.600000e+00
6.600000
6.6

或者,您也可以這樣做

printf("%d\n", (int)(a*b));

這將打印出您(有點)期待的結果。

您應該始終顯式地對變量進行類型轉換以匹配格式字符串,否則您可能會看到打印出一些奇怪的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM