1. 程式人生 > >三目運算符 段錯誤問題記錄

三目運算符 段錯誤問題記錄

運行 項目 str 時間 運行程序 data bsp nbsp serve

  在最近的一個項目中為了縮短代碼量,不使用if……else去做判斷,就使用了三目運算符。編譯通過,但是在調試功能得時候,老是出現段錯誤。花費了一個多小時時間才找到問題出在三目運算符。

  問題點:

  server_info_len = SERVER_INFO_LEN_MAX < strlen(pdata) ? SERVER_INFO_LEN_MAX : strlen(pdata);

  在三目運算中使用了strlen(pdata),就會出現段錯誤。

  修改後:

  tmep_len = strlen(pdata);

  server_info_len = SERVER_INFO_LEN_MAX < tmep_len ? SERVER_INFO_LEN_MAX : tmep_len;

  此時編譯後運行程序正常。

  原因暫時還沒有搞清楚,歡迎各位大神評論留言。謝謝

三目運算符 段錯誤問題記錄