关于C语言中运算符优先级的一次错误
生活随笔
收集整理的這篇文章主要介紹了
关于C语言中运算符优先级的一次错误
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
好久沒碰編程了,最近有點閑,又拾起來。做了個簡單的網絡測試程序,測試的時候發現有條語句老是獲取不到結果。如下:
if(portnumber=atoi(argv[1])>65535)
portnumber始終是0,試了半天才想起來,原來是C語言運算符優先級的問題。‘>’優先級高于‘=’,這條先計算‘>’運算符,‘>’執行順序是從左至右。首先計算函數atoi(argv[1])的返回值,然后和65535比較,若大于,則表達式(atoi(argv[1])>65535)=1,為真,若小于,則為0。然后將0或1賦值給portnumber,所以不管什么情,portnumber始終是0或者1。
正確的寫法應該是
if( (portnumber=atoi(argv[1])) >65535)
判斷端口號是否正確,更正確的寫法是:
portnumber=atoi(argv[1]);
if(portnumber<0 || portnumber>655345)
轉載于:https://www.cnblogs.com/hb7560/p/5070147.html
總結
以上是生活随笔為你收集整理的关于C语言中运算符优先级的一次错误的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第二十七篇、使用MVVM布局页面
- 下一篇: FLV audio tag