三目运算符 段错误问题记录

  在最近的一个项目中为了缩短代码量,不使用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;

  此时编译后运行程序正常。

 

  原因暂时还没有搞清楚,欢迎各位大神评论留言。谢谢

posted on 2018-07-06 19:05  Perfect_Code  阅读(325)  评论(0)    收藏  举报