2017-03-17 3 views
0

fには、iという値が割り当てられます。たとえば、3回の繰り返し後にループ内からf=i=2が割り当てられた場合、次回はfに再度値を割り当てることはできません。fの値は、 f一度最初の割り当て後に変数の値が変更されないようにするcの演算子はありますか?

for(i=0;i<N-1;i++) 
     { 
     if(array[i+1]>array[i]); 
     else if(array[i+1]<array[i]) 
     { 
     f=i;s=i+1;} 
     else 
     {f=i; 
     s=i+1;} 
     } 

は、それが変更すべきではありませんiの1つの値に初期化されます。助けるCの演算子はありますか?私はstaticを考えましたが、それは絶対に間違った選択です。

+0

これはオペレータのためのものではありません。 – Olaf

+0

変数 'const'を修飾しないのはなぜですか?それはまさにあなたが求めるものです。 – Olaf

+0

こんにちはオラフ、私はconstを使用してみましたが、コンパイラは "14.singleswapsort.c:30:7:error:読み込み専用変数 'f' f = i;"の割り当て... const宣言の違反です – abinjacob

答えて

3

最初にfをいくつかのプレースホルダ値に設定できます。次に、このプレースホルダをチェックし、一度だけ割り当てを行います。

int f = -1; 
for (i=0; i < N-1; i++) 
{ 
    if (array[i+1] > array[i]); 
    else if (array[i+1] < array[i]) 
    { 
     if (f == -1) f = i; 
     s = i+1; 
    } 
    else 
    { 
     if (f == -1) f = i; 
     s = i+1; 
    } 
} 
+1

'min'を演算子と見なした場合、センチネル値として' INT_MAX'を使うと "yes"の答にかなり近づきます。 – rici

+0

これは割り当てを妨げません。テストコードを忘れてしまった場合は、変数を設定することができます。そのため、コードは大きな利益を得ずに肥大化します。 Cはそのような要件のための言語ではありません。 – Olaf

0

あなたはあなたが任意の値に変数を設定し、その後に再設定されることを防ぐことはできませんCでやりたいする方法は、単純にありません未来。あなたが行うことができる最高のことは、-1などのように通常使うことを計画していないいくつかの価値を設定し、それを設定する前にそれが等しいかどうかを確認することです。しかし、あるオペレーターによってそれが設定されるのを防ぐことはできません。

関連する問題