今天想用三目表达式来替换if else语句,结果编译器报了一个warning。
q != NULL ? sprintf(buf,"%.*s", q-p, p) : strcpy(buf, p);
warning C4047: “:”: “int”与“char *”的间接级别不同
思考其原因,大概是三目表达式,会有一个返回值,而sprintf 与strcpy的返回值,前者是int 后者是 char* 不同类型;返回值不能同时有两种数据类型,况且这两种数据类型占位宽度也不一样。不过强制转换可以解决这个问题。