我真的很想知道soap_strcpy的返回值是多少?
# define soap_strcpy(buf, len, src) (void)((buf) && (size_t)(len) > 0 && (strncpy((buf), (src), (len) - 1), (buf)[(len) - 1] = '\0'))
我的工具报告返回值始终为false。 下面的最后一个条件是一种通常的表达方式?我怎么解释呢?
(strncpy((buf), (src), (len) - 1), (buf)[(len) - 1] = '\0'))
答案 0 :(得分:0)
(strncpy((buf),(src),(len) - 1),(buf)[(len) - 1] ='\ 0'))
Comma operator?现在更清楚了吗?
表达式列表,逗号分隔,表达式的值是评估列表中最后一个表达式的值。
由于你的最后一个表达式是零赋值,当然它总是为零。这并不意味着对整个列表的评估是无用的:第一学期副本,最后一个术语终止具有零字符的副本。