コンテンツにスキップ

「番兵」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
m編集の要約なし
/* 条件判定の数を削減するために
44行目: 44行目:



C <code>entry</code>  <code>len</code>  <code>a</code> <code>a[i] &lt;= entry &lt; a[i+1]</code>  <code>i</code>  <code>a[len-1] &lt;= entry</code> <code>a[len]</code> <code>len-1</code>  <code>entry &lt; a[0]</code>  <code>-1</code> 

C <code>entry</code>  <code>len</code>  <code>a</code> <code>a[i] &lt;= entry &lt; a[i+1]</code>  <code>i</code>  <code>a[len-1] &lt;= entry</code> <code>a[len]</code> <code>len-1</code>  <code>entry &lt; a[0]</code>  <code>-1</code> 

<syntaxhighlight lang="C">

int selectEdge(int entry, int a[], size_t len)

{

int i;

for (i = len - 1; i >= 0; i--) {

if (a[i] <= entry)

break;

}

return i;

}

</syntaxhighlight>




 <code>i &gt;= 0</code>  <code>a[i] &lt;= entry</code> 2<code>a[0]</code>  <code>a[0] &lt; entry</code> 

 <code>i &gt;= 0</code>  <code>a[i] &lt;= entry</code> 2<code>a[0]</code>  <code>a[0] &lt; entry</code> 

2021年9月14日 (火) 01:44時点における版


: sentinel



2使
  • 実データには出現しない、データの終了を表すための専用の値
  • 入力データを処理するループの終了条件が複数ある場合に、条件判定の数を削減するために置くダミーのデータ

終了を表すための専用の値




LISPNILC\0使


C strcmp 
int strcmp(const char s[], const char t[])
{
    int i = 0;
    while (s[i] != '\0' && t[i] != '\0') {
        /* どちらかの文字列に番兵が現れたら終了 */
        if (s[i] != t[i]) {
            break;        /* 不一致箇所を検出したら終了 */
        } else {
            i++;          /* 一致している場合は次の文字へ */
        }
    }
    return s[i] - t[i];
}

使C getchar  char char  getchar  int  unsigned char unsigned char EOF使-1使

2

条件判定の数を削減するために置くダミーのデータ


使-

1

C entry  len  aa[i] <= entry < a[i+1]  i a[len-1] <= entry a[len] len-1  entry < a[0]  -1 

 i >= 0  a[i] <= entry 2a[0]  a[0] < entry 
int selectEdge(int entry, int a[], size_t len)
{
    int i;
    for (i = len - 1; ; i--) {
        if (a[i] <= entry)
            break;
    }
    return i;
}

1

関連項目