c - 声明时初始化和下一步初始化有什么区别?

标签 c initialization

我需要初始化一个变量并测试它的值。 做到这一点最有效的方法是什么?

char *key = get_key(item);
if (key != NULL) { // do something }

或者

char *key; 
if (key = get_key(item)) { // do something }

副作用是否会带来一些好处? 谢谢!

最佳答案

啊,好,“最有效的方法”... 不。没有。忘记效率。

即使存在差异,这很可能是过早的优化。但在这种特殊情况下,唯一的区别在于术语(从技术上讲,您的第二个示例不是初始化,而是赋值表达式),并且您的编译器几乎肯定会从这两段代码中生成完全相同的汇编程序。

关于c - 声明时初始化和下一步初始化有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17814857/

相关文章:

c - 声明内联函数后,什么会再次导致多重定义错误?

c - 文件处理扰乱了对称的客户端-服务器通信

c - 二分查找 - 如果我从列表中间添加或减去 "1",我会得到中间数字左边的第一个数字还是一个数值?

java - 静态初始化是好的编程习惯吗?

objective-c - alloc/init 以及实例变量的设置

c - 如何在内核中动态分配数组?

c - C 初学者,libcurl 错误

java - 如何在 Java 中显式调用静态初始化器?

swift - 初始化发生在哪里,是在 init 方法中还是在实例声明中?

swift - Swift 中的 self 类型及其在两阶段初始化方面的使用