-8

コードを実行してコンパイルすると、AとZ、およびaとcの両方が未定義であるというエラーが発生します。これを修正するにはどうすればよいですか?

char toUpper ( char c ) {

    if ( C >= a + c <= z) 
        -32;
    return c;

} // ends toUpper

char toLower ( char c ) {

    if ( c >= A + c <= Z ) 
        +32;

} // ends toUpper
4

3 に答える 3

3

次のように、文字を一重引用符で囲んで文字リテラルを形成します。

'a'
于 2013-03-05T23:17:10.747 に答える
1

簡単な要約:

  • 文字定数を引用符で囲む必要があります。
  • 関数は大文字または小文字を返す必要があります。
  • 2 つの条件をテストする場合は&&、「論理 AND」と「論理 OR」を||使用します。

論理 and は、 の両側が true の場合に&&true です。論理 or は、一方が真の場合に||真です。

あなたがCの書き方を学んでいると確信しているので、「コードを編集して修正する」わけではありません。ここに「正しいコード」を入力した場合は、それをコピーして貼り付けるだけですあなたのコード、そしてまったく何も学びません。

于 2013-03-05T23:21:25.647 に答える
1

コードには 2 つの主な問題があります。

a1 つ目は、代わりに を使用していることです'a'。コンパイラがaそれを確認すると、それを識別子として解釈しようとします。これは、引数、ローカル、関数名などを参照する必要があることを意味します... ただし、コードの意図は、文字 a (アルファベットの最初の文字) を意味することです。単一の文字を一重引用符で囲むと、コンパイラはそれを文字リテラルとして解釈します。

2 番目の問題は、条件文が正しくないことです。Cがより大きいか等しいか'a'、より小さいか等しいかを確認しようとしてい'z'ます。このタイプのブール比較は&&、C の演算子で行われます。これは、の左側と右側の両方が真である場合にのみ真になり&&ます。

if ( C >= 'a' && c <= 'z') 
于 2013-03-05T23:22:29.213 に答える