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


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

while循環的一般格式為:

while(expr)

{

    ;//body

}

其中用來判斷循環條件的expr可以是任意表達式。當其是賦值語句的時候,含義為:先執行賦值語句,然后對左值進行判斷。如果左值為0則expr為假,while退出;否則expr為真,while繼續循環。

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

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

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

char sum(char* p)
{
    char c;
    char sum = 0;
    
    while((c = *p ++))//讀取字符串中的字符,直到字符串結尾。 這里用的就是一個賦值的方式。先把*p賦值給c,然后執行指針移位,再判斷c的值,如果c值為0,代表字符串結束,退出循環。
    {
        sum+=c;//累加值,不考慮溢出。
    }
    
    return c;//返回校驗和
}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM