不考虑宗教论据:
选项一:
if (pointer[i] == NULL) ...
if (!pointer[i]) ...
在C语言中,选项1和选项2在功能上是等价的吗?
由于没有比较操作,后者是否更快地解析?
不考虑宗教论据:
选项一:
if (pointer[i] == NULL) ...
if (!pointer[i]) ...
在C语言中,选项1和选项2在功能上是等价的吗?
由于没有比较操作,后者是否更快地解析?
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char pointer[5];
/* This is insense you are comparing a pointer to a value */
if(pointer[0] == NULL) {
exit(1);
}
...
}
=> ...
movzbl 9(%ebp), %eax # your code compares a 1 byte value to a signed 4 bytes one
movsbl %al,%eax # Will result in sign extension...
testl %eax, %eax
...
注意,如果没有警告,请使用-Wall
标志编译。不过,你应该始终编译为优化的gcc代码。
顺便说一下,在变量前加上volatile关键字,以避免gcc忽略它...
始终提及你的编译器版本 :)