C語言中自動隱式轉換和型別強制轉換的一點注意

2021-06-22 21:36:09 字數 564 閱讀 7492

直奔主題程式先看一道題:

#include

#include

#include

double proc(int q){

int n;

double sum,t;//本題的關鍵就在這幾個變數的型別上

sum = 2.0;

while(sum<=q){

t=sum;

//sum = sum+(n+1)/n;

sum =sum +(double)((n+1)/n);

n++;

return t;

void main(){

system("c");

printf("%f\n",proc(10))

當我們看到sum = sum+(n+1)/n;這樣的語句總會不假思索的對n這個變數來個強制轉換,但是c語言書上又有這麼一句話」當乙個低精度的資料型別和乙個高精度的資料型別運算時,運算結果為高精度型別。「這個時候不要迷茫,這只是強調結果。為了讓其他人看懂我們要對資料做些什麼,最好對它進行強制轉換。在這裡,所謂低精度到高精度的自動隱式轉換實際上還是強制的型別轉換。



C強制型別轉換與隱式轉換

如果乙個運算子兩邊的運算數型別不同,先要將其轉換為相同的型別,即較低型別轉換為較高型別,然後再參加運算,轉換規則如下圖所示 圖中橫向箭頭表示必須的轉換,如兩個float型數參加運算,雖然它們型別相同,但仍要先轉成double型再進行運算,結果亦為double型。縱向箭頭表示當運算子兩邊的運算數為不同...

c 中的型別轉換(強制轉換和隱式型別轉換)

在我們學習c語言的時候,就知道強制型別轉換和隱式型別的轉換,但是在型別轉換的過程中,很有可能乙個不注意,容易出問題,這無疑是加大了,程式設計師的工作量,而且還檢查很不好檢查。所以在c 中就對型別的轉換做了一定的限制,但是實際中大多數人,是在學習了c 語言後才學習 c 語言所以就用了 c 語言中的型別...

C語言基礎隱式型別轉換與強制型別轉換示例解析

目錄 資料有不同的型別,不同型別資料之間進行混合運算時必然涉及到型別的轉換問題。轉換包括隱式型別轉換和強制型別轉換。型別轉換的原則 占用mizfde記憶體位元組數少 值域小 的型別,向占用記憶體位元組數多 值域大 的型別轉換,以保證精度不降低。隱式轉換也稱為自動轉換,遵循一定的規則,由編譯器自動完成...