Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据c中的另一个条件更改循环条件语句_C_For Loop_Conditional Statements - Fatal编程技术网

根据c中的另一个条件更改循环条件语句

根据c中的另一个条件更改循环条件语句,c,for-loop,conditional-statements,C,For Loop,Conditional Statements,我想根据另一个条件在for循环条件中生成语句。例如,给定两个数字a和b,如果a>b,我想把条件设置为I-,否则设置为I++。这可以用if中的两个for语句来完成,但我只想用一个for循环来完成 像这样的 for(i=a; if(a>b),put i>=b here else put i<=b; if(a>b) put i-- here else i++) { some code... } 我试过这个: for( i = a; ( a > b ? i &g

我想根据另一个条件在for循环条件中生成语句。例如,给定两个数字a和b,如果a>b,我想把条件设置为I-,否则设置为I++。这可以用if中的两个for语句来完成,但我只想用一个for循环来完成

像这样的

for(i=a; if(a>b),put i>=b here else put i<=b; if(a>b) put i-- here else i++)
{
     some code...
}
我试过这个:

for( i = a; ( a > b ? i >= b : i <= b ); ( a > b ? i-- : i++ ) )
{
   ...
}
但它不起作用。 我能得到一些帮助吗


更新:这在某些联机编译器上不起作用。同样的代码在本地机器上也可以正常工作。已解决。

我认为只有一个坏情况:

for(i=a;(a<b?i<=b:i>=b);(a>b?i--:i++))
{
   ...
}

代码中的a>b应该是a而不是a>b,也许您可以使用以下条件

i += (a > b) ? 1 : -1

利用具有等于1或0的真值整数的a>b

或者,您可以重写循环,具体取决于您试图实现的目标:

aa = a < b ? a  : b;
bb = a < b ? b  : a;
for (i = aa; i < bb; i ++)

if (a < b) {
    for (i = a; i < b
 else 
    for (i = a; i > b; i--

如果循环中的代码不是很复杂,您可以复制它,如果是,那么将它包装在函数中并从两个循环调用它不会损失太多性能。您将获得代码的可理解性和可维护性。

这在某些在线编译器上不起作用。我试着在本地机器的代码块中使用它。它正在按预期工作。我不知道为什么它不能在在线编译器上运行。

我在发布和编辑时意识到。。谢谢,但它不起作用。a或b在for循环中改变了吗?你的代码看起来不错-你试过了吗?我在一个在线编译器中试过,但它不起作用。我试着在本地代码块,它的工作。我不知道为什么会这样。谢谢@artmPost-an,那么。@jigar它按预期工作,但我不明白你们有什么问题。这是一种新的方式。但它会增加for循环的数量。我只是想用一个做循环。谢谢你。这对于将来的编码很有用。但是为什么您需要一个循环呢?必须在每个循环中评估该条件,因此单个外部if和更简单的条件实际上可能会导致更好的性能。Ya,同意。但在我这边,挑战是用最少的字符制作一个程序:。因此,额外的for循环在这种情况下会花费很多。但我同意你的上述结论。
aa = a < b ? a  : b;
bb = a < b ? b  : a;
for (i = aa; i < bb; i ++)

if (a < b) {
    for (i = a; i < b
 else 
    for (i = a; i > b; i--