我正在学习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。
谢谢你!答案 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并且不执行剩余行