2016-01-27 56 views
-2

以下C代碼的輸出是什麼? 數據類型int可以採用浮點值嗎?解釋在這個小C程序中的比較

#include <stdio.h> 
int main(){ 
    float a = 1.1; 
    int b = 1.1; 

    if(a==b) 
    printf("YES"); 
    else 
    printf("NO"); 
} 
+1

否......'int'不能帶'float',所以有一個不同的數據類型'float ' – Gopi

+0

Int只能存儲整數(..., - 2,-1,0,1,2,3,...)。如果你將一個float分配給一個int,那麼這個時間段後面的所有內容都將被截斷並丟失。 '2.9 = 2'和'-2.9 = -2' – Flikk

回答

1

存儲在b的值將是1。比較時,b將投射到float的值1.0f,因此比較將產生NO。

1

int b = 1.1;

此截斷雙值1.11分配給變量b之前。因此輸出是NO。您可以比較intfloat。考慮下面這個例子:

float a=1.0; 
int b=1; 

if(a==b) 
    printf("YES"); 
else 
    printf("NO"); 

這裏,a轉換爲float比較之前,因此,你會得到一個YES輸出。

1

當你執行它時你應該得到答案No。

這是因爲當

int b=1.1; 

被執行,它初始化的變量b,然後分配1.11int。你可以通過輸出值b來檢查。

此外,類型int只存儲整數,但float可以存儲小數。類型完全不同。

2

輸出將是NO

這是因爲int不能正確地存儲float值。因此,存儲在b中的值將是1,這不等於1.1。因此,if情況永遠不會被滿足,因此輸出將永遠是NO。

1

它會編譯沒有任何錯誤。程序的輸出將是「否」。

在C中,intfloat是2種不同的數據類型。即使您嘗試將值1.1賦值給C中的整數變量,它也只會被初始化爲1。

0

其他人已經告訴過你答案是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.