相关疑难解决方法(0)

删除指针后将指针NULL化是一种好习惯吗?

我首先要说的是,使用智能指针,你永远不必担心这一点.

以下代码有什么问题?

Foo * p = new Foo;
// (use p)
delete p;
p = NULL;
Run Code Online (Sandbox Code Playgroud)

这是由另一个问题的回答和评论引发的.Neil Butterworth的一条评论产生了一些赞成:

在删除后将指针设置为NULL不是C++中的通用优良做法.有时候它是一件好事,有时它是毫无意义的,可以隐藏错误.

有很多情况下它无济于事.但根据我的经验,它不会伤害.有人开导我.

c++ null pointers dynamic-allocation

139
推荐指数
6
解决办法
8万
查看次数

";"的目的是什么?在for循环结束?

我找到了以下代码:

int func_prim (int zahl) {
    int count;
    if (zahl < 0)
        return -1;

    for (count = 2; zahl % count != 0 && zahl >= count; count++);
    if (count == zahl)
        return 1;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

功能点是检查数字是否是素数.

我不明白为什么for循环;最后:

                                                            v
for (count = 2; zahl % count != 0 && zahl >= count; count++);
Run Code Online (Sandbox Code Playgroud)

没有它,代码就无法正常工作.

解释是什么?

c for-loop

77
推荐指数
10
解决办法
6262
查看次数

C/C++ if/for 之后没有大括号,如何将其删除?

当 if/for 语句后只有一行代码,没有大括号时,有没有办法通过 linting(或者可能seding/ ing)来摆脱或找到这些令人讨厌的情况?regexp像这个:

if(condition)
    return;
Run Code Online (Sandbox Code Playgroud)

作为参考,为什么我想摆脱它 - 这个线程中给出了很多原因:

在单行 if 或循环中使用大括号(即 {})的目的是什么?

我维护一些遗留代码,并处理其他人的一些未真正完成的代码,并且在调试时时不时会发现这种代码风格像绊线一样工作的情况:

if(condition_for_early_return)
    LOG("Im here")   // surprise surprise, I just broke control logic
    return;
Run Code Online (Sandbox Code Playgroud)

另外,我见过这样的代码:

if(condition)
<tabs>   do_smth();
<spaces> do_smth_else();
Run Code Online (Sandbox Code Playgroud)

当然if只包含first do_smth(),编译器不会混淆。但由于这些do_功能在视觉上是一致的,我想知道这是预期的行为还是在遗留代码中从未发现的错误。

我知道cppcheck没有抓住这些情况 - 已经尝试过了。你有办法自动发现这些陷阱吗?

c c++ cppcheck

6
推荐指数
2
解决办法
444
查看次数

为什么我不需要for循环和if语句括号

我不明白为什么在这种情况下我不需要括号

for (int i = 0; i < 10; i++) 
    if (num[i] < min) 
        min = num[i];
Run Code Online (Sandbox Code Playgroud)

为什么我在这种情况下需要括号

int num[10], min;
for (int i = 0; i < 10; i++) {
        cout << "enter 10 numbers" << endl;
        cin >> num[i];
}
Run Code Online (Sandbox Code Playgroud)

c++ for-loop if-statement brackets

5
推荐指数
4
解决办法
3657
查看次数

{}在C#中做了什么

这是一个非常简单的问题,但在我向前推进之前我想知道这个问题,所以我理解这个过程.

在我关注的教程中,我使用的是if语句.如果您执行以下代码,则无需使用{}

if (userValue == "1")
    message = "You won a new car!"; 
Run Code Online (Sandbox Code Playgroud)

但是,如果您使用多行代码,则需要{}.

if (userValue == "1")
{
    WriteLine ("You won a new car!");
    ReadLine ();
}
Run Code Online (Sandbox Code Playgroud)

有人可以用非常简单的术语向我解释为什么会这样吗?我只需要一个经验法则,这样我就可以理解为什么.没有什么过于复杂我只是一个初学者.我知道他们识别出一段代码,但我不确定为什么这会对一两行产生影响?

c# curly-braces

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

递减时"删除"时出现语法错误

我在案例"删除"时遇到语法错误.我一直试图解决它,但我无法弄明白.谁能告诉我如何解决它?谢谢

该代码适用于在线商店购物车

switch($action)
{
    case "add":
    if (isset($_SESSION['cart'][$id]))
        $_SESSION['cart'][$id]++;
    else
        $_SESSION['cart'][$id]=1;
break;

case "remove":
    if (isset($_SESSION['cart'][$id]))
    (
        $_SESSION['cart'][$id]--; (ERROR HERE)
        if ($_SESSION['cart'][$id]==0)
            unset($_SESSION['cart'][$id]);
    )
break;

case "empty":
    unset($_SESSION['cart']);
break;

}
Run Code Online (Sandbox Code Playgroud)

php case

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