[英]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它返回相同的愚蠢結果
float
和int
相乘的結果是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.