1 名前:デフォルトの名無しさん [2006/05/04(木) 08:53:09 ] 入門者向けの俺に聞けスレです。 なんでもきいてよね
730 名前:デフォルトの名無しさん [2006/07/10(月) 01:36:13 ] 質問です。 「'」という文字を配列に格納したいのですが、エラーが出てうまくいきません。 エラーは以下の3つです。 文字列定数は1文字か2文字でなければならない。 ,が必要。 文字列または文字定数が閉じていない。 宜しくお願いします。
731 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 01:41:01 ] ¥’
732 名前:デフォルトの名無しさん [2006/07/10(月) 03:17:38 ] >>731 ありがとうございます!
733 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 12:36:59 ] >>730-731 せめて半角で書いて欲しいとオモタ
734 名前:デフォルトの名無しさん [2006/07/10(月) 20:38:16 ] CHAR PTCHAR TCHAR WCHAR型の違いを教えてください
735 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 21:49:40 ] typedef char CHAR; typedef wchar_t WCHAR; #ifdef UNICODE_ typedef WCHAR TCHAR; #else typedef CHAR TCHAR; #endif typedef TCHAR *PTCHAR;
736 名前:726 [2006/07/10(月) 21:50:19 ] >> 728 サンクス
737 名前:デフォルトの名無しさん [2006/07/10(月) 21:58:42 ] putchar だけで文字コード 112、117等 を出力するプログラムを教えてください。
738 名前:734 [2006/07/10(月) 22:08:03 ] >>735 アリガ10
739 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 22:28:49 ] >>737 putchar(112)
740 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 22:58:26 ] そのまんまですな。
741 名前:デフォルトの名無しさん mailto:sage [2006/07/11(火) 02:29:38 ] ワロタ
742 名前:デフォルトの名無しさん mailto:sage [2006/07/11(火) 02:33:22 ] CでGUI? WindowsならWin32 LinuxならGTK+ どっちもCライブラリ
743 名前:デフォルトの名無しさん mailto:sage [2006/07/11(火) 09:08:17 ] >>728 BorlandC++と一緒にTurboDebugger落として使ってみたら、 このデバッガって、キャラクタ画面ベースのUIなのな。 あまりに懐かしいスタイルにめまいがしたyo!
744 名前:デフォルトの名無しさん mailto:sage [2006/07/11(火) 16:09:48 ] GUIのデバッカってメモリ喰うしデバッカに落ちた時点で表示できないと思う。
745 名前:デフォルトの名無しさん mailto:sage [2006/07/11(火) 22:50:17 ] DLL内でmallocした物をexeからfreeしてはいけないと聞いた事があるのですが malloc以外のHeapCreateやHeapAlloc(GetProcessHeapとかなら問題ないのでしょうか?
746 名前:デフォルトの名無しさん mailto:sage [2006/07/11(火) 23:12:42 ] >>745 確保するときと解放するときとで、同じヒープハンドルを用いれば問題ない。 けれどDLLでメモリを確保して、そこへのポインタをEXEに返すのだったら、 DLLはそのメモリを解放する関数も公開するのが一般的だと思う。
747 名前:デフォルトの名無しさん mailto:sage [2006/07/11(火) 23:19:17 ] >>745 ちなみに前者がいけない理由が、ことなるメモリマネジメントルーチンを使っている 可能性があるから。VCのDebug/Releaseモードとか。
748 名前:デフォルトの名無しさん mailto:sage [2006/07/11(火) 23:45:52 ] >>746-747 そのルーチン覗いてみるのも勉強になるかもしれませんね。 とりあえず一般的な方法でしてみたいと思います。 ありがとうございました。
749 名前:デフォルトの名無しさん [2006/07/12(水) 01:01:46 ] VC++なんですが、以下のように配列を定義しています。 signed short foge[]={ 0x0001, 0x7fff, 0x8000, 0xffff }; コンパイルするとマイナス値(0x8000と0xffff)で warning C4305: 'initializing' : 'const int ' から 'short ' へ切り詰めます。 というワーニングがでます。 C言語ではsigned 16bitを表す接尾子が無いようなんで、 キャストで回避するしか無いんでしょうか?
750 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 01:04:40 ] 素朴な疑問。 何故const signed shortにしないのだろう。 それはさておき、-0x8000, -0x0001ではダメ?
751 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 01:11:56 ] >>749 よくわからないけど、キャスト以外の方法で、警告消したいだけなら 0x8000 → -32768 0xFFFF → -1 とか、#pragma とかがあるよ。
752 名前:デフォルトの名無しさん mailto:age [2006/07/12(水) 01:26:04 ] すみません ファイルからの読み込みなのですが 改行がCR(0D)のみで書かれているテキストファイルから テキストモードでデータを読み込みたいのです fscanf(fp,"%d",&data1); のように書くと、だいたいはCRのみの改行も改行として読んでくれるのですが たまに改行をすっ飛ばして変な値を読んでしまいます 改行がCRのみのテキストファイルをうまく読み込む方法はありませんでしょうか
753 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 01:27:43 ] fgets()
754 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 10:47:28 ] >>752 だいたいうまくいくけど、たまに変になるって、違うところでバグってるんじゃないの?
755 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 11:17:19 ] 3.4E-38って 0.00000000000000000000000000000000000000034?
756 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 11:49:45 ] >>755 0.000000000000000000000000000000000000034
757 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 14:13:29 ] >>756 あ、ごめん、3のところが38番目になればいいのね。 じゃあfloat型って3.4E-38〜3.4E+38って書いてあるから 34000000000000000000000000000000000000〜0.000000000000000000000000000000000000034? でも有効桁7桁ってどういうこと?
758 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 14:42:48 ] >>757 >でも有効桁7桁ってどういうこと? 数学の時間寝てたのか それともまだ習ってないのか まあとにかくググれ。
759 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 15:01:17 ] ぐぐってもわからん float fe; fe=5e2; って書くと 500.000000 って出力されるけど、どこが7桁?
760 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 15:21:00 ] >>759 俺のところで実行したらこうなるよ。 #include <stdio.h> main() { float f = 1.0 / 3; double d = 1.0 / 3; printf("%.30f\n", f); printf("%.30f\n", d); return 0; } 結果 0.333333343267440795898437500000 0.333333333333333314829616256247
761 名前:デフォルトの名無しさん [2006/07/12(水) 15:22:11 ] グローバル変数を多用してしまうのですが、 変数を各関数で共有する方法ってグローバル変数以外に何かありますか?
762 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 15:31:49 ] >>757 3.4E-38 は 3.4 * 10の-38乗 だ。 有効桁数は扱える桁数。7桁なら 1.234567 とか 1.234567E+100 とか、 とにかく 7 桁は扱えるが 1.2345678 と書いても最後の 8 が扱えない。 >>759 どう出力されるかということと内部的に何桁保持されているかという ことは別の話。
763 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 15:35:45 ] >>760 いやそうなるのはわかるけど、 float型が3.4E-38〜3.4E+38で有効桁7桁ってどういう意味? float f = 1.0/3 printf("%f") だと 0.333333 で7桁まで出力されるって意味? 3.4E-38〜3.4E+38ってどういうこと? 出そうと思えば50桁以上出せるけど…
764 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 15:39:15 ] >>761 必要な変数は構造体のメンバにして その構造体へのポインタを受け渡しする。
765 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 15:39:28 ] >>762 どうも じゃあfloat型が3.4E-38〜3.4E+38っていうのは?
766 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 15:50:21 ] 普通に3.4*10^-38〜3.4*10^38でしょ? 3.400000*10^38のほうが正しいかな?
767 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 15:53:15 ] >>764 ありがとうございます、さっそくチャレンジしてみます
768 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 15:53:27 ] >>766 はあ・・・ でも10の50乗でも100乗でも入力できるし出力も出来るよ?
769 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 15:56:39 ] なんかよくわかんないけど、まあこれでも読んでよ。 「浮動小数点型と誤差」 ttp://www.kyoto-su.ac.jp/~yamada/programming/float.html
770 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:04:31 ] >>769 ああ…それよんだんだけど 1.175494 10-38 < float の絶対値 < 3.402823 10+38 って書いてあるよね。 私の本は 3.4E-38〜3.4E+38 って書いてあるよ。 それで、例えば、 float f=1000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000001; printf("%40.40f",f); って書いても 1000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000001; って表示されるよ。38超えてるよ?
771 名前:770 mailto:sage [2006/07/12(水) 16:07:09 ] あ、ちょっとコピペミスしたけど、気にしないで
772 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:11:00 ] >>770 コンパイラ何使ってるの?
773 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:11:58 ] floatよりdoubleの方が速いってよ
774 名前:770 mailto:sage [2006/07/12(水) 16:12:42 ] >>772 cygwinのgccだけど・・・
775 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:16:17 ] >>774 >>770 のソースを「全部」コピペしてみて。動かしてみるから。
776 名前:770 mailto:sage [2006/07/12(水) 16:20:30 ] >>775 え・・・でも770そのまんまだよ? #include <stdio.h> main(){ float f=1000000000000000000000000000000000000000.0000000000000000000000000000000000000001; printf("%40.40f\n",f); } 終わり。
777 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:22:13 ] >>776 うちでは"Inf"って表示されるけど・・・ gccのバージョンはいくつ?
778 名前:770 mailto:sage [2006/07/12(水) 16:24:22 ] gcc version 3.4.4 (cygming special) です。
779 名前:770 mailto:sage [2006/07/12(水) 16:26:21 ] コンパイラの問題なの?
780 名前:777 mailto:sage [2006/07/12(水) 16:30:09 ] >>778 おかしいな・・・。うちとまったく一緒のコンパイラなのに。 ちなみに printf("%d\n", sizeof(1000000000000000000000000000000000000000.0000000000000000000000000000000000000001)); ってやってみて。 8って表示されるはずだから。これはその数値がdouble型のリテラルだって コンパイラが判断してることを示してる。それをfloat型に代入するときに 暗黙の型変換が行われるはずなんだけど・・・。 ってことで、俺はお手上げ。
781 名前:777 mailto:sage [2006/07/12(水) 16:30:42 ] あ、ちなみに"Inf"ってのはInfinityね。正の無限大。
782 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:34:30 ] >>770 そのソースでそのgccだと、警告が表示されると思うのだがそれをコピペして見給え。
783 名前:770 mailto:sage [2006/07/12(水) 16:38:20 ] >>777 printf("%d\n", sizeof(1000000000000000000000000000000000000000.0000000000000000000000000000000000000001)); ってしたら core dump しました。 うちの環境がおかしい?WinXP Cygwin最新のものだけど… 入れなおすか…? どうもありがとうございました。うちがおかしいってことが分かったのでうれしいです。
784 名前:777 mailto:sage [2006/07/12(水) 16:39:20 ] >>782 -Wallでも出ない。
785 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:39:53 ] 釣りか? 壮大な釣りだったのか?
786 名前:770 mailto:sage [2006/07/12(水) 16:41:12 ] >>783 あ、いや、間違ってた printf("%d\n", sizeof(1000000000000000000000000000000000000000.0000000000000000000000000000000000000001)); でちゃんと8って表示されました。 >>782 警告も何にも出ませんよ。普通にa.exeすると結果表示されます。
787 名前:777 mailto:sage [2006/07/12(水) 16:42:35 ] >>786 んじゃ、最後にuname -aした結果をコピペしてくれ。
788 名前:782 mailto:sage [2006/07/12(水) 16:46:07 ] >>770 >>777 警告出ないか? main()の戻り値の型がないと。漏れの端末だとこうなるのだが。 -- $ gcc --version ; gcc foo.c gcc (GCC) 3.4.4 (cygming special) (gdc 0.12, using dmd 0.125) Copyright (C) 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. foo.c:3: warning: return type defaults to `int' foo.c: In function `main': foo.c:6: warning: control reaches end of non-void function
789 名前:770 mailto:sage [2006/07/12(水) 16:47:14 ] う〜Cygwinコピペできないからつらい uname -a は CYGWIN_NT-5.1 ****** 1.5.19(0.150/4/2) 2006-01-20 13:28 i686 Cygwin です。名前は伏せ。珍しくもないけど
790 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:48:04 ] >警告も何にも出ませんよ。普通にa.exeすると結果表示されます。 make使ってて更新されたと認識されていないとか、違うところのa.exeが起動されているとか。 make使わず直接gccを動かしてみるとか、明示的にパスを指定してみるとかしてみたら?
791 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:49:54 ] 普通にcygwinをインストールすると所謂dos窓で動くから、 マウスで範囲選択して右クリックでコピペされると思うけどなぁ。
792 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:50:08 ] sizeof(float) が 8 だったりしたら…
793 名前:777 mailto:sage [2006/07/12(水) 16:51:56 ] >>788 あ、すまん、そこは警告出る。警告でないといったのは、4,5行目に関して。 手間かけさせてスマンかった。
794 名前:777 mailto:sage [2006/07/12(水) 16:53:26 ] >>789 うちより一つ新しいバージョンだな。ちなみにうちは、 CYGWIN_NT-5.1 MARS 1.5.18(0.132/4/2) 2005-07-02 20:30 i686 unknown unknown Cygwin 最新の1.5.20も怪しいところがあるみたいだから、しばらく更新はしないでおこうw
795 名前:770 mailto:sage [2006/07/12(水) 16:53:38 ] >>782 あ、範囲指定できたんだCygwinて・・・ gcc (GCC) 3.4.4 (cygming special) (gdc 0.12, using dmd 0.125) Copyright (C) 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. しかでません。makeつかってません。フォルダの中にa.exeもソースも一個しかありません。
796 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:56:04 ] 実行するときに ./a または ./a.exe でやってる?
797 名前:770 mailto:sage [2006/07/12(水) 16:56:57 ] >>796 やってますよ〜 そこまでバカではない・・・w
798 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 16:58:25 ] じゃあ sizeof(float) はいくつ? printf("%d\n", sizeof(float)); で出してみて。
799 名前:770 mailto:sage [2006/07/12(水) 17:01:15 ] 8ですた。
800 名前:782 mailto:sage [2006/07/12(水) 17:03:02 ] 漏れの方は同じだな。Win2Kだけど。 CYGWIN_NT-5.0 whee 1.5.19(0.150/4/2) 2006-01-20 13:28 i686 Cygwin コンパイラよりも疑うべきはライブラリか?
801 名前:782 mailto:sage [2006/07/12(水) 17:04:57 ] >>799 それが原因か…… #じゃぁなんでfloatが8バイト? 64ビットLinuxでも4バイトなのに……
802 名前:770 mailto:sage [2006/07/12(水) 17:09:16 ] >>801 やっぱおかしいんすね。環境作り直します。 Cygwin入れなおします。ちゃんと正規のルートで(学校の先輩からもらわずに)。 どうも失礼しました。
803 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 17:13:31 ] いやまぁ先輩から貰っても全然OKなんだが、オチを知りたいんだよなぁオチを・・・
804 名前:デフォルトの名無しさん mailto:sage [2006/07/12(水) 17:14:13 ] はっ、その先輩がスーパーハカーだったというオチ!?
805 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 13:27:50 ] 自分でコンパイルしたのかな? >>804 gcc を自分でコンパイルできるとスーパーハカーなの? じゃあ俺も10年ぐらい前からスーパーハカーだったんだね。
806 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 13:38:59 ] 猫でもわかるC言語プログラミングって本を読んで勉強はじめたんだけ この本の説明めちゃくちゃ解り辛い・・・ まぁ単に俺が知識0ってこともあるんだろうけど、どの入門書籍もこんなもん?
807 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 14:12:46 BE:224654459-#] 猫でもわかるの書籍版は読んだことないけど、プログラムそのものが まったく初めてなら、入門書一冊読んだだけじゃなかなか難しいと思う。
808 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 14:15:29 ] どの本でも同じだけど、HelloWorldが動いているのを見て喜べるピュアな心の持ち主なら どんな本読んでも上達出来ます。
809 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 14:15:50 ] 猫以下なんじゃね?
810 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 14:31:58 ] プログラムそのものが難しいって言うより、説明が言葉不足だったり 説明なしでいきなり「ここはこうなりますね、ここはこうなるので」 みたいなところが多くて・・・ Cからはじめるのがそもそも間違いなんだろうか
811 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 17:53:08 ] >>810 まずはAから段階を踏まないと
812 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 18:32:39 ] >説明なしでいきなり「ここはこうなりますね、ここはこうなるので」 そういうのに一々疑問を持ってストレスを貯めるやつはプログラム書けないよ すべてそういうもんなんだと素直に覚えないと。 そもそもプログラミングの入門書って根幹に触れないからみんな説明不足といわれれば説明不足になる罠
813 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 18:44:26 ] 英語だって、なんでアルファベットなんだろうとか思い始めたらダメだよ。 挨拶はハローとか決まりきった定型パターンがあるからそう言うのは理屈無しに覚えるしか無い。 日本語でも、10年以上話して使っていて未だに表現方法とかの新発見がある様に、覚えたてでその言語の全てを理解するのは無理。 とりあえず義務教育の英語の教科書の様に、入門書を最後まで一通りやってみて、分からない所は他の書籍や先輩に訊くとかセミナーや研修にでも出るとかで補完していかないと。 自分でそう言う学習法が出来ない香具師は、金出してスクールに通ったほうがいいよ。
814 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 18:49:56 ] 心配しなくてもあとで「そういうことだったのか!」って気づくことになるから安心してその本をまずは読破すれ。
815 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 19:04:24 ] 理系が文章力カスなのはわかりきったことだろ
816 名前:デフォルトの名無しさん mailto:sage [2006/07/13(木) 22:45:20 ] とりあえずは鵜呑み丸暗記にしておいて 必要が出てきたり気になったら自分で調べたりこういう場所とかで聞けばいいよ 入門書の中には一部間違ったことが書いてあるものもあるから 完全に鵜呑みってのもちょっとまずいことはまずいんだけどね まあ気にするな
817 名前:デフォルトの名無しさん [2006/07/14(金) 01:46:26 ] C++で7桁×7桁の計算プログラム組んでるんですが float使ったら小数点以降が表示されてあまり美しくない。 小数点以降を表示しない方法、教えてください。
818 名前:デフォルトの名無しさん [2006/07/14(金) 01:52:24 ] main() { Card deck[40]; int *face[] = {1,2,3,4,5,6,7,8,9,10}; char *suit[] = {"hart","daiya","kurab","superd"}; srand(time(NULL)); fillDeck(deck, face, suit); shuffle(deck); printf("baeojunnbisimasu"); return 0; } プログラミングの一部なんですが コンパイルが通りません int faceのところがだめらしいのですが何処が悪いんでしょうか? どなたか解る方おしえてください
819 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 01:54:23 ] >>817 整数型にcastして表示しろ
820 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 01:55:12 ] >>818 int *faceではなく、int face
821 名前:デフォルトの名無しさん [2006/07/14(金) 02:02:38 ] ごめん、castって何? #include <stdio.h> int main(void) { float alfa, beta, ganm; printf("7桁の整数を入力して下さい(1回目):"); scanf("%f",&alfa); printf("7桁の整数を入力して下さい(2回目):"); scanf("%f",&beta); printf("\n%f * %f = %f\n", alfa, beta, alfa * beta); }
822 名前:デフォルトの名無しさん [2006/07/14(金) 02:11:56 ] >>820 さん マジでありがとう^^ 通りました
823 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 03:31:14 ] %fではなく%gを使う習慣をつけよう。 #って話か?
824 名前:デフォルトの名無しさん [2006/07/14(金) 08:34:11 ] #include<stdio.h> int main(void) { int n,temp,m=0; FILE*fp1=fopen("2バイト文字.txt","r"); FILE*fp2=fopen("改行テスト.txt","w"); while((n=fgetc(fp1))!=EOF){ if(n=='\n'){ m=0; } else if(m==40){ fputc('\n',fp2);/*ここが上手くいかない模様*/ m=0; } fputc(n,fp2); m++; } fclose(fp1); fclose(fp2); printf("end\n"); return 0; }
825 名前:824 [2006/07/14(金) 08:37:11 ] 2バイト文字、日本語のテキストを行の文字数20で改行するようなプログラムを作りたいです。 例えば、行の文字数40のやつを、原稿用紙の形式に変換したい。 しかし、>>824 のやつだと、改行後の一文字目が変になってしまいます。 文字コードの問題なのかどうかすら分かりません。 ここが変だ、という場所の指摘をお願いします。
826 名前:824 [2006/07/14(金) 08:44:11 ] 失礼。 tempとprintf("end\n")は気にしないで……。
827 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 10:15:49 ] 超基本問題です。 main(){ int i; float f; double d; long l; char st[80]; printf("文字1文字,%%c,int,%&i="); scanf("%c",&i); printf("%%c,int,i=%c\n",i); printf("文字列,%%s,char,st="); scanf("%s",st); printf("%%s,char,st=%s\n",st); printf("文字列入力の時には&は不要\n"); printf("8進数%%o,int,%&i="); scanf("%o",&i); printf("%%o,int,i=%o\n",i); printf("%%d,int,i=%d\n",i); printf("10進数%%d,int,%&i="); scanf("%d",&i); printf("%%d,int,i=%d\n",i);
828 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 10:17:35 ] printf("16進数%%x,int,%&i="); scanf("%x",&i); printf("%%x,int,i=%x\n",i); printf("%%d,int,i=%d\n",i); printf("long型%%ld,long,%&l="); scanf("%ld",&l); printf("%%ld,long,l=%ld\n",l); printf("%%d,int,l=%d\n",l); printf("実数float型%%f,float,%&f="); scanf("%f",&f); printf("%%f,float,f=%f\n",f); printf("%%d,int,f=%d\n",f); printf("実数double型%%lf,double,%&d="); scanf("%lf",&d); printf("%%lf,double,d=%lf\n",d); printf("%%d,int,d=%d\n",d); } これやると、例えば 8進数%o,int,&i=70 とか入れると、iに7しか入ってくれなくて、0が次の10進数の処理に自動的に入っちゃうんだけど、なぜ?
829 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 11:01:09 ] 親から習う日本語が方言訛りで一部怪しかったりしても、使ってるうちに標準語の表現に気づいて修正できるものだよ。 もちろん最初から標準語で覚えられるような環境を探すのも手。 gcc方言とか、IA方言とか、VC方言とかウィンドウズ方言とかいくらでも環境依存の癖はある。
830 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 11:39:34 ] >>829 その直前の文字列の入力をコメントにしたらどうなる?