C語言中,while()語句中使用賦值語句

while()語句括號中是一個邏輯表達式,用以判斷while循環是否須要繼續執行。能夠是賦值語句。函數

while循環的通常格式爲:spa

while(expr)指針

{code

    ;//bodyblog

}ci

其中用來判斷循環條件的expr能夠是任意表達式。當其是賦值語句的時候,含義爲:先執行賦值語句,而後對左值進行判斷。若是左值爲0則expr爲假,while退出;不然expr爲真,while繼續循環。字符串

不過直接用賦值語句作expr時,編譯器可能爲認爲賦值操做符=是等於判斷符==的誤寫,這時編譯器可能會報一個警告(warning),編譯器是否報警,及報警告仍是錯誤(error)取決於編譯器設置。爲避免這種狀況,能夠用while((var = expr))的形式,告知編譯器就是要先賦值再判斷,編譯器就不會理會了。get

下面是舉一個例子用來輔助說明。編譯器

函數功能,將參數字符串中的全部值按照ascii碼進行累加,獲取校驗和,溢出後只取低字節值。it

char sum(char* p)
{
    char c;
    char sum = 0;
    
    while((c = *p ++))//讀取字符串中的字符,直到字符串結尾。 這裏用的就是一個賦值的方式。先把*p賦值給c,而後執行指針移位,再判斷c的值,若是c值爲0,表明字符串結束,退出循環。
    {
        sum+=c;//累加值,不考慮溢出。
    }
    
    return c;//返回校驗和
}
相關文章
相關標籤/搜索