删除NULL指针是否安全?
它是一种很好的编码风格吗?
从C++,是min和max优选超过fmin和fmax?为了比较两个整数,它们是否提供基本相同的功能?
您是倾向于使用这些功能集中的一个还是更喜欢自己编写(可能是为了提高效率,可移植性,灵活性等)?
笔记:
提前致谢!
浏览Linux内核源代码时,我发现了一段代码,其中括号括起来的语句块被视为表达式a laisp(或ML),即表达式,其值是最后一个语句的值.
例如:
int a = ({
int i;
int t = 1;
for (i = 2; i<5; i++) {
t*=i;
}
t;
});
Run Code Online (Sandbox Code Playgroud)
我一直在研究ANSI C语法,试图弄清楚这段代码如何适合解析树,但我还没有成功.
那么,有没有人知道这种行为是由标准规定还是只是GCC的特殊性?
更新:我已尝试使用标志-pedantic,编译器现在给我一个警告:
warning: ISO C forbids braced-groups within expressions
Run Code Online (Sandbox Code Playgroud) #include <stdio.h>
#define abs(x) (x < 0 ? -x : x)
int x;
int doubleGlobalX()
{
x*=2;
return x;
}
int main()
{
scanf("%d",&x);//5
printf("%d\n",abs(doubleGlobalX()));//20
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当输入5为时,此代码的输出为20。当输入为时15,输出为60。不知道为什么它将两倍于全局。
c ×3
c++ ×2
expression ×1
gcc ×1
macros ×1
max ×1
min ×1
null-pointer ×1
pointers ×1
standards ×1