gpt4 book ai didi

c++ - 创建并验证指向 "if"语句的指针

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:57:32 26 4
gpt4 key购买 nike

这段代码是否正确?

void foo ( int* p )
{
if ( int* p2 = p ) // single "="
{
*p2++;
}
}

我一直认为它不是,但最近我在同事的我的资源中看到了这样的代码。

如果“p”为 NULL 怎么办? MS VS 2008 工作正常但显示“警告 C4706:条件表达式中的赋值”。

谢谢。

最佳答案

警告 assignment within conditional expression 通常由编译器发出,以防止您编写的情况

 if (a = b) 
{

的意思

 if (a == b) // big difference!
{

在您的示例中,“分配警告”实际上是伪造的,因为它实际上不是分配,而是初始化:

 {
int *p2 = p;
if (p2)
{

}
}

并且没有风险您实际上想要语法错误(int *p2 == p ?!)代替:)

您帖子的其余部分是完全有效的 C++03(及更高版本)并且只是按照它说的去做1


1(就持久效果而言,并不多,因为

  • p2 在没有的情况下被取消引用
  • p2 在没有的情况下递增,

但我猜这只是示例代码?如果不是很明显,*p2++ 等同于 *p2; p2++;)

关于c++ - 创建并验证指向 "if"语句的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8253368/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com