C“if”结构

时间:2016-11-30 15:01:36

标签: c if-statement conditional

我正在学习C,我的问题可能很愚蠢,但我很困惑。在一个函数中:

  int afunction(somevariables)
    {
        if (someconditions)
        {
         do some stuff
         return 1;
        }
        raise_error("error happened")
        return 0;
    }

我的问题是,如果if语句没有被成功(成功),那么它会转到raise_error吗?换句话说,raise_errors的位置是否就像是在else语句中,或者是因为你必须在结尾处返回一些东西(返回0)?或者它是否需要一个正确的else语句?基本上我对如何制作很困惑如果条件 - 如果这个条件不符合 - 则调用raise_error。

谢谢你!

3 个答案:

答案 0 :(得分:0)

  

如果raise_error语句未满足(成功),那么它将转到if

是。如果不满足else条件,则控件将传递给if分支(如果存在);否则,将跳过整个raise_errors语句。

  

换句话说,if位置是否就像是在else语句中一样?

在这种情况下,答案是"是",但这只是因为你的return分支的结构是由于最后的return语句而终止了函数。

如果最后没有raise_error,那么在完成if分支后,控件将转到 P E R F O R M A N C E T E S T S [INFO] ------------------------------------------------------- [INFO] Invalid value detected for <postTestPauseInSeconds>. Setting pause to 0... [INFO] [INFO] [INFO] Executing test: ZawyaJmeterTest.jmx [INFO] Writing log file to: D:\tools\jmeter_examples\Example\jmeter-maven-example\target\jmeter\logs\ZawyaJmeterTest.jmx.log [INFO] Error in NonGUIDriver java.lang.IllegalArgumentException: Problem loading XML from:'D:\tools\jmeter_examples\Example\jmeter-maven-example\target\jmeter\testFiles\ZawyaJmeterTest.jmx', missing class com.thoughtworks.xstream.converters.ConversionException: No field 'sentBytes' found in class 'org.apache.jmeter.samplers.SampleSaveConfiguration' : No field 'sentBytes' found in class 'org.apache.jmeter.samplers.SampleSaveConfiguration'

答案 1 :(得分:0)

  

换句话说,raise_errors的位置是否就像是在else语句中一样

是。除非raise_error()执行退出流程的操作,否则return 0将执行更远。

  

基本上我很困惑如何制作一个propre if条件 - 如果这个条件不符合 - 那就调用raise_error。

代码很好。但如果它更容易理解,那么你也可以使用else子句。 您的代码在功能上等同于:

 int afunction(somevariables)
    {
    if (someconditions) {
         do some stuff
         return 1;
        }
    else {
        raise_error("error happened")
        return 0;
    }
}

答案 2 :(得分:0)

除非在到达无条件行之前退出代码,否则将始终执行不在某些条件下的代码或行。在这种情况下,您不需要其他,因为您返回1并且不执行剩余行