午後問題を参考に作成したC言語の演習課題です。プロフィールを見る電子書籍ならページ数を気にせずソースコードを貼り付けられるのではないかと思い至ったプログラマ。閉じるmixiチェック基本情報技術者レベルのC言語演習課題nakano.hこの本は有料です。閲覧するには購入する必要があります。購入するにはパブーへログインしてください。有料本の購入に関しては、こちらのマニュアルをご確認ください。負数の場合、先頭にマイナス符号を付ける。数値の下位から3桁ごとにコンマを挿入する。LONG_MIN(-2147483648)の表示に対応する。LLONG_MIN)に対応する。整数値から3桁区切りの数字列を生成する。負数の場合、フラグを立てておく。最下位桁を取り出し、1桁右シフトする。3桁ごとにコンマを挿入する。負数の場合、マイナス符号を付ける。逆向きに出来上がった数字列を並べ直す。テストデータでconvert()を実行する。str[])」に修正するだけです。バッファサイズの修正ただし関数convert()を呼び出す側にも注意が必要です。64ビットの整数値を3桁区切り形式の文字列に変換すると、当然32ビットのときより長い文字列が出来上がります。そのため関数convert()に渡す数字列バッファに十分なサイズがあるかを確認しておかなければなりません。15」としていました。これは数字列が最長となるLONG_MINを変換した「-2,147,483,648」の14文字を格納できるサイズです。27」と修正しました。数字列バッファサイズは27以上であればいくつでも構いません。「C言語のlong型は32ビットである」という表現は誤りで、正しくは「処理系によって異なる」と覚えなければなりません。その処理系というのは64ビットOSのことだろうと単純に考えてしまいそうですけど、実はそれも正確ではありません。64ビットOSで64ビットに変わるのはメモリ空間(ポインタ型)であって、long型も64ビットに変わるかどうかは採用されているデータモデルによって異なるからです。Xを含むUNIX系OSの64ビット版ではLP64(long型とポインタ型が64ビット)というデータモデルを採用しており、long型も64ビットに変わります。long型とポインタ型が64ビット)を採用しているため、long型は32ビットのままなのです。現在32ビット版ではUNIX系OSもWindowsもILP32を採用しています。3.1時代のお話です。このlong型のサイズが処理系によって異なるという事情はC++やObjective-Cでも同じです。ところがJavaでは「Javaのlong型は64ビットである」と言語仕様で決まっています。OSのデータモデルに関わらずこのように決めてしまえる理由は、Java仮想マシンという別の処理系がOSとの間に入ってJavaプログラムを実行するという画期的な仕組みがあるからでしょう。C#でも「C#のlong型は64ビットである」と言語仕様で決まっています。詳しく言うと「C#のlong型はSystem.Int64クラスの別名である」となっています。C#にも共通言語基盤(CLI)という仮想マシンの概念があるため、System.Int64は他のOSへ移っても64ビットのままです。C++/CLIは共通言語基盤(CLI)上で動くプログラムを書くためにC++を拡張した言語仕様です。「C++/CLIのlong型はSystem.Int32クラスの別名である」と決まっているので32ビットになります。Rubyは整数型を意識する必要のないスクリプト言語ですが、内部的にはFixnumクラスとBignumクラスが存在します。Bignumは多倍長整数を扱うクラスで、演算結果がFixnumの範囲内か否かで自動的に相互変換が行われます。そのFixnumの範囲が32ビットなのか64ビットなのかは「処理系によって異なる」です。long型の整数値を4桁区切り形式の16進数字列に変換するよう関数convert()を変更してください。変換ルールは次の通りとします。整数値を16進数に変換する。負数の場合、先頭にマイナス符号を付ける。16進数の下位から4桁ごとにスペースを挿入する。負数の場合、先頭にマイナス符号を付ける。数値の下位から4桁ごとに空白を挿入する。LONG_MIN(-2147483648)の表示に対応する。LLONG_MIN)に対応する。整数値から4桁区切りの16進数字列を生成する。負数の場合、フラグを立てておく。最下位桁を取り出し、16進数で1桁右シフトする。4桁ごとに空白を挿入する。負数の場合、マイナス符号を付ける。逆向きに出来上がった数字列を並べ直す。テストデータでconvert()を実行する。コメントする次のページを読み込むこの本は有料です。閲覧するには購入する必要があります。購入するにはパブーへログインしてください。有料本の購入に関しては、こちらのマニュアルをご確認ください。メールで受取りますか?(読者登録について)読者になる。