Conditionally set a variable if it's NULL

ε祈祈猫儿з 提交于 2019-12-02 02:09:06

A GNU extension to C allows the ternary conditional operator to evaluate to its condition if it's true and there's nothing in the first branch:

char *email = (char *)sqlite3_column_text(statement, 10);
email = email ? : "";

or, more exactly what you say you're looking for

char * email = (char *)sqlite3_column_text(statement, 10) ? : "";

This works when compiling with Clang, too.

Another possibility would be:

char *email = (char *)sqlite3_column_text(statement, 10);
email = (NULL == email) ? email : "";

But I think I'd recommend just going with your first option. Make a code snippet if you're doing it a lot.

Does this work?

char *email;
// Reviewed by "R." to verify sequence point correctness.
email = (email = (char *)sqlite3_column_text(statement, 10))? email : "";
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!