我首先要说的是,使用智能指针,你永远不必担心这一点.
以下代码有什么问题?
Foo * p = new Foo;
// (use p)
delete p;
p = NULL;
Run Code Online (Sandbox Code Playgroud)
这是由另一个问题的回答和评论引发的.Neil Butterworth的一条评论产生了一些赞成:
在删除后将指针设置为NULL不是C++中的通用优良做法.有时候它是一件好事,有时它是毫无意义的,可以隐藏错误.
有很多情况下它无济于事.但根据我的经验,它不会伤害.有人开导我.
我找到了以下代码:
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)
没有它,代码就无法正常工作.
解释是什么?
当 if/for 语句后只有一行代码,没有大括号时,有没有办法通过 linting(或者可能seding/ ing)来摆脱或找到这些令人讨厌的情况?regexp像这个:
if(condition)
return;
Run Code Online (Sandbox Code Playgroud)
作为参考,为什么我想摆脱它 - 这个线程中给出了很多原因:
我维护一些遗留代码,并处理其他人的一些未真正完成的代码,并且在调试时时不时会发现这种代码风格像绊线一样工作的情况:
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没有抓住这些情况 - 已经尝试过了。你有办法自动发现这些陷阱吗?
我不明白为什么在这种情况下我不需要括号
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) 这是一个非常简单的问题,但在我向前推进之前我想知道这个问题,所以我理解这个过程.
在我关注的教程中,我使用的是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)
有人可以用非常简单的术语向我解释为什么会这样吗?我只需要一个经验法则,这样我就可以理解为什么.没有什么过于复杂我只是一个初学者.我知道他们识别出一段代码,但我不确定为什么这会对一两行产生影响?
我在案例"删除"时遇到语法错误.我一直试图解决它,但我无法弄明白.谁能告诉我如何解决它?谢谢
该代码适用于在线商店购物车
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)