【问题标题】:What does de if-Block meande if-Block 是什么意思
【发布时间】:2019-09-16 19:17:51
【问题描述】:

if 块中的加法是什么意思? if-Question 比较什么?

我尝试过使用整数的代码,但它显示 if 块每次都为真

if (f(a,751) + f(b, -751) -f(c, a)) 

.

【问题讨论】:

  • 您正在使用表达式f(a,751) + f(b, -751) -f(c, a) 作为条件。如果不知道f 的功能以及abc 是什么变量,就不可能说会发生什么。

标签: c++ if-statement addition


【解决方案1】:

if 块中的加法是什么意思?

它的含义与其他任何地方完全相同,并且取决于 f(a,751) 等具有的类型表达式。所以你的if 语句在逻辑上等于:

auto tmp = f(a,751) + f(b, -751) -f(c, a);
if( tmp ) ... 

这样你会更容易理解+if内部没有特殊含义

if-Question 比较什么?

C++ 有特殊的规则如何将某些类型转换为 bool 所期望的类型 bool。例如,对于int,任何非零值都将转换为true,否则将转换为false。在不知道f() 返回什么的情况下,无法说更多。

您应该明白a < b 并没有什么特别之处,例如,它只是一个返回bool 的表达式。 if 只是评估括号内的内容并尝试将其转换为 bool。能用就用,不能用就会报错。

【讨论】:

    【解决方案2】:

    在显示的代码中,整个表达式 f(a,751) + f(b, -751) - f(c, a) 被求值,如果它返回一个可转换为 bool 的值(例如,整数),那么如果该值被转换为 true,则将执行分支。对于整数,这意味着该值是否为非 0。

    f 函数没有定义我无法进一步详细说明。

    【讨论】:

      【解决方案3】:

      加法就是这样,加法。假设 f() 返回一个整数,if 语句只是评估一个整数条件。在这种情况下,任何非零数都将返回 true。

      【讨论】:

        猜你喜欢
        • 2021-08-31
        • 1970-01-01
        • 2011-03-09
        • 2021-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-02
        • 1970-01-01
        相关资源
        最近更新 更多