相关疑难解决方法(0)

删除NULL指针是否安全?

删除NULL指针是否安全?

它是一种很好的编码风格吗?

c++ pointers memory-management null-pointer delete-operator

281
推荐指数
5
解决办法
15万
查看次数

在C++中使用min和max函数

从C++,是minmax优选超过fminfmax?为了比较两个整数,它们是否提供基本相同的功能?

您是倾向于使用这些功能集中的一个还是更喜欢自己编写(可能是为了提高效率,可移植性,灵活性等)?

笔记:

  1. C++标准模板库(STL)在标准C++ 算法头中声明minmax函数.

  2. C标准(C99)提供标准C math.h标头中的函数fminfmax函数.

提前致谢!

c c++ max min

69
推荐指数
5
解决办法
26万
查看次数

ANSI C中的parens表达式包含复合语句(块)吗?

浏览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)

c standards gcc expression

37
推荐指数
2
解决办法
7507
查看次数

为什么全局变量会翻倍两次?

#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 macros c-preprocessor

1
推荐指数
1
解决办法
43
查看次数