【问题标题】:What's wrong in this c function? [closed]这个 c 函数有什么问题? [关闭]
【发布时间】:2015-01-03 19:59:30
【问题描述】:

如果原始值为 -33,则用于为 int 变量提供值 26,如果原始值为 -19,则为 27

void func(int *a)
{

    if (a == -33)
        *a = 26;

    if (*a == -19)
        *a = 27;
}

【问题讨论】:

  • 使用这个:if (*a == -33)
  • 你自己就不能观察这两种 if 语句模式的差异吗,至少!请不要在没有理解的情况下复制代码,如果你这样做......

标签: c function


【解决方案1】:

让我们仔细看看第一个 if 语句:

if (a == -33)
    *a = 26;

a == -33 是问题所在。请记住,a 的类型为 int*。因此,您没有检查 a 的值是否为 -33;您正在检查a 指向的地址 是否等于-33。修复它:

if (*a == -33)
    *a = 26;

您只需取消引用指针以将其实际值与 -33 进行比较。

【讨论】:

    【解决方案2】:

    我会写这样的函数

    void func( int *a )
    {
        if ( *a == -33 )
            *a = 26;
        else if ( *a == -19 )
            *a = 27;
    }
    

    至于您的功能,似乎有一个错字。而不是

    if (a == -33)
    

    必须有

    if (*a == -33)
    

    【讨论】:

    • @shekhar suman 我确信我的答案与其他人不同。
    • 不,gyst 保持不变,无论你给予内部陈述什么优先级!!!
    • 无论你现在假设什么,但事实不会改变......
    猜你喜欢
    • 2023-03-23
    • 1970-01-01
    • 2014-08-22
    • 2015-02-23
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多