問題タブ [kr-c]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - K&Rブックのitoa()がわかりません
私はK&Rを読んでいます。今のところうまくいっていますが、機能的itoa()
にわからないことがあります。ここでitoa()
彼らは彼ら自身が数を逆にすることを言います。たとえば、10は01です(文字列を逆にします)。
どうやって数字が逆転したのかわかりません。次の数字を実行しているのに、n % 10 + '0'
10、1が削除され、0になります。それとも私はその論理を理解していませんか?
c - K&R C から ANSI C に変換する方法は?
難読化された C コード コンテストの 1988 エントリである次のコードを実行しようとしています。
エントリの説明から、このコードは自身の領域を見て pi を計算しています。コードを変更せずにコンパイルに成功しました。しかし、実行すると、値が 0.25 になりました。期待しているのは 3.14 です。コードの説明によると、K&R C で記述されており、ANSI C では変更しないと正しく動作しません。私はそれを適切に実行するためにそれらの変更を行う必要があると思います. 私は K&R C の経験がないので、上記のコードを ANSI C に変更したり、問題があれば指摘したりするのを手伝ってくれる人がいます。これを実行するために Microsoft Visual Studio 2008 を使用しています。
c - ANSI Cでmain()関数を正しく宣言する
C標準は言う:
プログラムの起動時に呼び出される関数の名前はmainです。実装は、この関数のプロトタイプを宣言していません。これは、intの戻り型で、パラメーターなしで定義されるものとします。
または2つのパラメーターを使用します(ここではargcおよびargvと呼びますが、宣言されている関数に対してローカルであるため、任意の名前を使用できます)。
または同等のもの、またはその他の実装定義の方法。
ただし、Kernighan&Ritchieの第2版(正規のANSI C)の聖書では、次のものを使用しています。
誰が正しいですか?int
戻り値が自動的にCで返されると想定されていない関数と関係がありますか?
c - コンピューターでは、データ型はどの程度正確に表されますか?
私は K&R を読んでいる初心者のプログラマーであり、この本は多くの予備知識を前提としているように感じます。私を混乱させる 1 つの側面は、メモリ内の変数の実際の表現、または存在と言うべきかということです。データ型は変数に対して正確に何を指定しますか? この質問の言い方がよくわかりません...でも、いくつか質問してみると、誰かが首尾一貫した答えをくれるかもしれません。
getchar() を使用する場合、「int」はより多くの値を保持できるのに対し、「char」は 256 個の値しか保持できないため、「char」型よりも「int」型を使用する方がよいと言われました。EOF 値を保持するために変数が必要になる場合があるため、256 文字以上が必要になるか、EOF 値が 256 文字の 1 つと重複します。私の考えでは、これは穴の空いた箱の集まりだと思います。誰かが私により良い表現を与えることができますか? これらの「ボックス」にはインデックス番号がありますか? EOF が 256 の使用可能な値の値と重複する場合、重複する値を予測できますか?
また、これは、char c = 'a' のように変数に手動で値を代入する場合にのみ、データ型「char」を使用しても問題ないということですか?文字?
また、「char」と「int」の実際の重要な違いは何ですか? 「char」タイプの代わりに「int」タイプを使用できる場合、特定の時間に一方を他方よりも優先して使用することに決めたのはなぜですか? 「メモリ」を節約するためですか(「メモリ」が正確にどのように機能するかは実際にはわからないため、引用符を使用します)。
最後に、char 型の 256 個の使用可能な値を正確に取得するにはどうすればよいでしょうか? モジュロ 2^n (n = 8) について読んだことがありますが、なぜそれが機能するのでしょうか (バイナリと関係がありますか?)。「モジュロ 2^n」のモジュロ部分とはどういう意味ですか (モジュロ演算に関連する場合、関係がわかりません...)?
c - k&r はビット操作で混乱を引き起こします
練習問題: x を返す関数 setbits(x,p,n,y) を書き、位置 p から始まる n ビットを y の右端 n ビットに設定し、他のビットは変更しません。
私の解決策の試みは次のとおりです。
おそらく間違っていますが、ここで正しい道を進んでいますか?そうでない場合、私は何を間違っていますか? なぜこれが完全に理解できないのかはわかりませんが、これを考え出すのに約 1 時間費やしました。
ありがとう。
c - xcode を使用して (K&R 経由で) C を学習する
私はC プログラミング言語(K&R) で C を学んでいます。
テキスト エディターと実行中の gcc の間を行き来したくないので、IDE として xcode を使用することにしました。これまでのところ、セクション 1.5.2 まで問題なく本の例に従うことができました。
有効な (?) プログラムを指定すると...
...入力に含まれる文字数を示す最終出力が表示されません。xcode コンソール ウィンドウから入力しています。
デバッグ中に、私のプログラムが while ループでスタックし、EOF トークンに遭遇しないように見えます。これに対応するために、代わりに改行を新しい条件として に置き換えEOF
ました"\n"
。これも何もせず、int とポインターの比較警告が表示されます。
ここで何が間違っていますか?
Xcode を使用して K&R をフォローできますか?
c - データ型を混在させると心拍出量が発生する
K&R のサンプル プログラムの 1 つをいじっていたところ、これが見つかりました。
3.000000 の出力を生成し (これは完全に予想していました)、次にハートの付いた新しい行 (まったく予想していませんでした) を生成します。なぜハートがついた新しい行を出力するのでしょうか? データ型を混在させることと関係があると思います。
c - K&R演習1-21-精神的な理解不足
「不可能な」K&R演習。
「同じ間隔を実現するために、空白の文字列を最小数のタブと空白に置き換えるプログラムentabを作成します。同じタブストップを使用します。たとえば、n列ごとに使用します。nは変数または記号パラメーターのどちらにする必要がありますか?」
私が抱えている問題は、これを正しく行う方法がわからないことです。あまり説明的ではないことは知っていますが、それがここでの問題です。私が見た例のほとんどは、空白の数を数え、それらのシリーズをタブに置き換えましたが、これはその質問ではありません。私はその質問を理解していると思いますが、現在はこれを行うことができないと感じています。
誰か助けてもらえますか:)
編集:私がこれまでに書いたコードはここにあります。
c - 関数宣言:K&RとANSI
K&R関数宣言とANSI関数宣言の違いは何ですか?
c - 「C プログラミング言語」以降の変更点
C での私の経験は、ほとんどが非常に古い本であるThe C Programming language の第 2 版からのものです。C がリリースされてから何が変更されましたか?廃止または廃止された機能のうち、避けるべきものは何ですか?