以下C代碼的輸出是什麼? 數據類型int
可以採用浮點值嗎?解釋在這個小C程序中的比較
#include <stdio.h>
int main(){
float a = 1.1;
int b = 1.1;
if(a==b)
printf("YES");
else
printf("NO");
}
以下C代碼的輸出是什麼? 數據類型int
可以採用浮點值嗎?解釋在這個小C程序中的比較
#include <stdio.h>
int main(){
float a = 1.1;
int b = 1.1;
if(a==b)
printf("YES");
else
printf("NO");
}
存儲在b
的值將是1
。比較時,b
將投射到float
的值1.0f
,因此比較將產生NO。
int b = 1.1;
此截斷雙值1.1
到1
分配給變量b
之前。因此輸出是NO
。您可以比較int
至float
。考慮下面這個例子:
float a=1.0;
int b=1;
if(a==b)
printf("YES");
else
printf("NO");
這裏,a
轉換爲float
比較之前,因此,你會得到一個YES
輸出。
當你執行它時你應該得到答案No。
這是因爲當
int b=1.1;
被執行,它初始化的變量b
,然後分配1.1
是1
的int
。你可以通過輸出值b
來檢查。
此外,類型int
只存儲整數,但float
可以存儲小數。類型完全不同。
輸出將是NO
這是因爲int
不能正確地存儲float
值。因此,存儲在b
中的值將是1
,這不等於1.1
。因此,if
情況永遠不會被滿足,因此輸出將永遠是NO。
它會編譯沒有任何錯誤。程序的輸出將是「否」。
在C中,int
和float
是2種不同的數據類型。即使您嘗試將值1.1賦值給C中的整數變量,它也只會被初始化爲1。
其他人已經告訴過你答案是NO。 int數據類型可以採用浮點值嗎?
是的,他們可以,但只能在一個聲明!如果你希望int變量像float變量一樣行爲,你需要將它轉換爲float。
例如:
int x = 5;
int y = 3;
printf("%f \n", (float)x/y);
輸出將是5.0/3,這將是浮點值。 (float)x
被稱爲鑄造。您也可以投浮點值轉換成整數,(int)some_var
等
注:類型x和y的仍將INT!他們在本聲明中表現得像浮動。 但是,在你的程序中將不起作用,因爲只要你聲明int b = 1.1;
b就變成1.
否......'int'不能帶'float',所以有一個不同的數據類型'float ' – Gopi
Int只能存儲整數(..., - 2,-1,0,1,2,3,...)。如果你將一個float分配給一個int,那麼這個時間段後面的所有內容都將被截斷並丟失。 '2.9 = 2'和'-2.9 = -2' – Flikk