1 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 01:18:41 ] エスケープシーケンスやWin32APIなどの環境依存なものでもOK。 ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.47【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1200464091/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
314 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 09:59:53 ] ああそういうことか STLが何か文字コードに依存してるのかと思ったよ
315 名前:デフォルトの名無しさん [2008/02/10(日) 10:01:29 ] たとえば10文字目が何バイト目とか判別できないだけ
316 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 10:20:58 ] >>301 GCC 4.0.4, 4.1.2 と 4.2.3 のマニュアルには... | The G++ minimum and maximum operators (‘<?’ and ‘>?’) and | their compound forms (‘<?=’) and ‘>?=’) have been deprecated | and will be removed in a future version. Code using these operators | should be modified to use std::min and std::max instead. [Excite 翻訳] | そして、'G++最小の、そして、最大のオペレータ、(‘<?'、‘>、'、)、 | 彼らの合成フォーム(‘<?=')と‘>=') 非難して、将来のバージョンで取り | 除くでしょう。 これらのオペレータを使用するコードはstdに以下を使用 | するように変更されるべきです:分とstd:、:代わりに最大限にしてください。 となってるから、4.2.1 なら使えるはずだが、なんかオプションがいるのかも しれないな。 ちなみに 4.0.4 の一つ前の 3.4.6 のマニュアルには '>?=' 自体の説明がな いから、実験的に付け加えられた拡張に思える。
317 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 10:36:34 ] excite翻訳ひどいなw g++の最小・最大演算子とその合成形はすでに非推奨であり 将来のバージョンでは廃止されます。これらの演算子を使用 しているコードは代わりに std::min と std::max を使用するように変更すべきです。
318 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 11:03:47 ] T"なんたら" を L"なんたら" に置き換えるマクロはどう書くですか?
319 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 11:04:42 ] #define T Lでできなければ無理。 Windowsは関数形式のマクロにして対処している。
320 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 12:13:50 ] template<class L>
321 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 12:17:02 ] gcc だと wchar_t は4バイトで UTF-32 を入れるようになっている。 wchar_t はあくまでその環境で扱える最大の文字コードを格納できる文字型でしかなく、 2バイト固定でもなければ UTF-16 や UCS-2 専用のものでもない。 C++0x ではそこんとこ困るってことで UTF-16 と UTF-32 を直接サポートするようになる予定のようだ。 また VC++ が対応遅らせそうな気がして憂鬱になるが。
322 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 12:36:12 ] NT3.1時代からUnicode使ってきたOSに従うべき。
323 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 13:33:02 ] 先日こちらでアドバイスをいただき、プログラムを 書いてみました。学校でできなかった分を家で作成しようと ソースを持ち帰ったのですが文字化けしてしまい開くことが できなくて困っています。 学校では秀丸エディタで「.cpp」の拡張子で保存をして gccでコンパイルをしているようなのですが、同じ様な 環境を作ることは可能なのでしょうか? winのメモ帳でも開けるものだと思っていたので困っています。 どうかよろしくお願いします。
324 名前:291 mailto:sage [2008/02/10(日) 13:34:37 ] おそらく文字コードが違うんだろ。 nkf使うか、メモ帳以外のエディタでソースコード見れ
325 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 13:36:29 ] まずはまともなエディタを使うんだ 秀丸にあわせるのがよいかと思うがサクラエディタなど他にもいろいろある *.cppをgccでコンパイルというのもなんか引っかかるが・・・
326 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 13:37:13 ] >>323 秀丸のエンコーディングを一時的に変えるか、まともなフリーなエディタを拾って使えばいいんでない?
327 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 13:56:49 ] つーかC/C++全然関係ない問題なのなw
328 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 14:42:18 ] 回答いただきありがとうございます。 327さんの仰るとおり、C以前の問題でした申し訳ありません。 >>325 gccでコンパイルというのは、なにかおかしいのでしょうか? コンパイル時のコマンドがそのようなコマンドを入力すると 教えられたのです。 まずはエディタを探してみることからはじめてみます。 ありがとうございました。
329 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 14:48:08 ] .cppなら普通gccではなくg++を使う。
330 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 14:55:04 ] 結局はgccだけどな
331 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 15:44:22 ] 質問です。 最近Cを勉強していますが、コンパイルが上手く出来ません。 コンパイラーはBorland C++ Compiler5.5を使ってます。 コンパイルすると、「指定されたパスが見つかりません」となります。 原因は何が考えられますか?
332 名前:デフォルトの名無しさん [2008/02/10(日) 15:45:20 ] #include <iostream> と #include <iomanip> ってどういうとき使うの?
333 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 15:46:08 ] Pathを通してないのが原因。 setbccでぐぐるとよい。
334 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 15:46:20 ] 宣言や定義を使用するとき。
335 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 15:47:03 ] std::coutとかstd::cinとか使いたければ、まず<iostream>をインクルードする。 その上で、引数のあるマニピュレータが集められているのが<iomanip>。
336 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 15:49:39 ] >>332 レベルの質問する奴に只「マニピュレータ」なんて書いたって通じないだろ と思って解説を書こうとしたけど、うんこしたくなったので中止
337 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 15:54:56 ] でもそれ見てマニピュレータで検索すればすぐ解決すると思うけどw
338 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 16:08:51 ] 用途としては>>49 みたいな場合に。
339 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 22:21:50 ] test
340 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 22:28:40 ] 十進数の入力を二進数表示するコードを書いてみたんですが、 最初MASKを0x01に設定して1とか255とか入力したら桁が上下逆になりました。 0x80000000に設定して頭からチェックさせてやったらうまくいったんですが、 intel系のプロセッサはリトルエンディアンだからビットを上下逆に扱うんじゃないんですか? /* d2b.c */ #include <stdio.h> #define MASK 0x80000000 int main(void) { unsigned int x; int n; scanf("%d", &x); for(n = 0; n < 32; n++){ if( ((x << n) & MASK) == 0) putchar('0'); else putchar('1'); if( (n+1) % 4 == 0) putchar(' '); } return(0); }
341 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 22:34:58 ] >>340 ×ビットを上下逆 ○バイトの並びが逆
342 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 22:35:39 ] エンディアン関係ナス
343 名前:340 mailto:sage [2008/02/10(日) 22:37:25 ] >>341 バイト単位で逆なんですね。 >>342 あ、全然関係ないんですか; ありがとうございましたm(__)m
344 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 23:18:02 ] stdio.hのremove関数の使い方は下記で問題ないでしょうか? remove("ファイルのパス"); 今現在、例えば remove("D:\\test\\test.txt"); こんな具合の1文だけを試しても成功しません、-1が返ってきて失敗しているようです パスは絶対パスで問題ないと思いますし、testフォルダとtest.txtは試しに作ってみたものです プログラム中で開いてもいませんし読み取り専用でもありません 見当がつかず困っています、何かご存知の方いたらよろしくお願いします
345 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 23:21:13 ] >>344 perror() してみれ
346 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 23:22:15 ] >>344 そのパスと同じままfopenして開けるのか? つまりほんとにそのファイルをプログラムから認識できているのかをチェキラ! あと、strerrorでエラー内容を取得してみては?
347 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 23:23:36 ] test.txt.txtだったりして・・・ いやさすがにそれはないか
348 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 23:26:52 ] Dドライブは実はDVD-ROMドライブだったりして・・・いやさすがにそれはないか
349 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 23:30:58 ] そもそもDドライブが存在しな・・・ないか ないよな
350 名前:344 mailto:sage [2008/02/10(日) 23:32:54 ] permission deniedというエラーが・・ ファイルのプロパティは読み取り専用とか隠しファイルとかチェック入っていないんですが 全く違う部分なんでしょうか?
351 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 23:33:25 ] chmod a+w FILENAME
352 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 23:35:53 ] Dドライブがネットワークドライブ・・ のわけないよな
353 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 23:36:33 ] >>351 ahodesuka?
354 名前:344 mailto:sage [2008/02/10(日) 23:36:53 ] >>351 うわぁ・・そういうの必要なんですか・・ Cじゃ書けないですよね? Dはあります
355 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 23:37:30 ] ^^;
356 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 23:37:45 ] WindowsXP と仮定して 1.コマンドプロンプトを開く [スタートメニュー]-[ファイル名を指定して実行] cmd 2.コマンドプロンプトで下記の三つのコマンドを打つ D: cd \test dir これで test.txt があるかどうか確認する
357 名前:デフォルトの名無しさん [2008/02/10(日) 23:38:17 ] >>351 それはUNIXだろ。 DOSとWindowsは rd /s/q c:\ だろ。
358 名前:344 mailto:sage [2008/02/10(日) 23:39:44 ] ファイル自体はあります 今ファイルのパスを変数に入れて、開いて中の文を出力させたりしてみました その変数をそのまま使っています それとfcloseもしっかり
359 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 23:39:53 ] >>357 そうだったな
360 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 23:45:39 ] >>358 っ attrib d:\test\test.txt
361 名前:344 [2008/02/10(日) 23:52:26 ] >>360 そういう方法以外のコード内に記述して済ませる方法って言うとWin32APIってのを使うしかないんでしょうか
362 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 23:56:03 ] >>360 その前に permission denied ってんだから削除する権利があるのかどうか確認しろよ。 コマンドプロンプトから del してみるとか、エクスプローラから削除してみるとか。
363 名前:344 mailto:sage [2008/02/11(月) 00:08:29 ] >>362 そこら辺は出来ます、管理者権限でログインしてるので間違いないはずです
364 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 00:12:57 ] >>363 実際消してみた?他のソフトがロックしてるってことはない?
365 名前:344 mailto:sage [2008/02/11(月) 00:14:34 ] 消してみました、remove関数を試す為に作ったファイルなのでそういったことはないと思います
366 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 00:19:03 ] そのプログラム内でopenしてる状態でremoveしようとしてる、とかいうオチじゃないよね。
367 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 00:23:02 ] 同じこと何度も確認されまくっててかわいそす
368 名前:344 mailto:sage [2008/02/11(月) 00:23:53 ] >>366 上で言ったとおり、remove関数を使う最低限の文だけで実行してもエラーはでますし closeもしています
369 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 00:26:22 ] もうみんな思い当たる節が尽きたんだろ・・・
370 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 00:29:05 ] プログラムを管理者権限で実行してないとか。
371 名前:344 mailto:sage [2008/02/11(月) 00:29:09 ] 絶対パス指定出来ない訳ないですよね・・・なんでだろう
372 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 00:29:59 ] あとは、ディレクトリ消そうとしてるとかぐらいかな。 ファイルを開いて中の文を出力させたりしてると言うから多分違うだろうが...。
373 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 00:30:13 ] OS やコンパイラの情報でも出さないとこれ以上どうしようもないだろ。エスパーでもなけりゃ。
374 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 00:42:31 ] リブートしてみるとか
375 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 02:53:40 ] エクスプローラなんかでやったときとプログラムでやったときとで権限が違うとか。 Vistaだったらありそうだ。
376 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 02:54:17 ] おれの経験から予想するとtest.textになってると予想 それで何時間も悩んだことがあるw
377 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 03:23:03 ] >>318 _T("なんたら") を L"なんたら" で良ければ、 #define _T(x) L ## x でいいんじゃないか?
378 名前:デフォルトの名無しさん [2008/02/11(月) 04:10:31 ] 明日までに1000×1000くらいの行列の逆行列とかを計算することが必要な宿題が 出ました。他の人はmatlabでやるのですが、自分はc++でやろうと思ってます。 逆行列の計算は自分で実装しなくてよいので、ライブラリとかを使おうと思ってます。 今調べたところでは、有名なc++用の行列計算ルーチンは、blitz++, MTL, blas, TNTなどがあることが分かりました。将来性(一度覚えたら長く使える)と性能(一番重視) を考えると、どれを選ぶべきでしょうか? よろしくお願いします。
379 名前:デフォルトの名無しさん [2008/02/11(月) 04:20:20 ] すいません、 > 明日まで じゃなくて、来週までです。
380 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 04:20:26 ] 俺は LAPACK 使ってるけど、 他の選択肢を吟味した訳じゃないからなあ。
381 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 04:37:58 ] >>378 将来性はどれを覚えても同じかと。 C++を長く使うのであれば他人のライブラリを実装することも多くなると思う。 性能というのが速度重視であれば自分で実測した方が早いかな? 他には、関連ページの多さ、組み込み易さ、ソースが公開されているか?あたりを重視して決めればいいかと ぶっちゃけmatlab使えるならそっちを使った方がいいようにも思うが・・
382 名前:デフォルトの名無しさん [2008/02/11(月) 05:10:35 ] >>380 >>381 ありがとうございます。自分が一応一番C++ができる(ことになっている)ので、matlabとの 性能比較のために、自分がc++版を実装することを期待されてます。簡単な偏微分を解く課題なのですが、 絶対matlabに勝ちたいので、自分の環境で性能比較してみます。とりあえず、選択範囲としては、 lapack, tnt, blas, mtl, blitz++, ublas(blasのboost版), mkl(intelのマスカーネルライブラリ) くらいでしょうか?
383 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 05:32:00 ] >>382 無駄な努力だと思うけど。どうしてもってことならコンパイラもiccにすることお勧め。 どうせなら、cublasかClearSpeedでも使ってぶっち切りを狙うのもいいかもねw
384 名前:デフォルトの名無しさん [2008/02/11(月) 09:15:11 ] >>383 どちらも専用ハードが必要じゃないですか。 でもこんなのもあるんですね。知らなかった。 コンパイラはiccとgccを比較します。
385 名前:デフォルトの名無しさん [2008/02/11(月) 09:51:09 ] CloseHandleの前後で、ハンドルが閉じられていることを確認するにはどうしたらいいですか
386 名前:デフォルトの名無しさん [2008/02/11(月) 10:00:18 ] ハンドルが使用中かどうかを知りたいんです
387 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 10:00:48 ] なぜそんなことをする必要があるのですか
388 名前:デフォルトの名無しさん [2008/02/11(月) 10:06:36 ] たとえばサブディレクトリのファイルリストをひとつひとつ取得したいとき、 同一ディレクトリにまだファイルが残っていれば次のファイルを呼んで、 無ければハンドルを解放して、子ティレクトリへ進めたいんです
389 名前:デフォルトの名無しさん [2008/02/11(月) 10:07:45 ] フラグを別に持っていれば確認できますが、なるべく変数を減らしたいと思います
390 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 10:09:05 ] かならずNULLで初期化してCloseしたらNULL代入すればいい。
391 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 10:09:56 ] ファイルハンドルは NULL じゃなくて INVALID_HANDLE_VALUE だ!
392 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 10:16:38 ] NULLで比較しちゃってるコード多いけどな それで動いちゃってるし 型安全なtypedefでもないかぎり防ぐのは無理ぽ
393 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 10:17:59 ] ごめん間違えた INVALID_HANDLE_VALUEは-1だった
394 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 10:19:16 ] >>392 クラス作ればいいじゃん。
395 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 10:29:42 ] >>388 なんか設計がおかしいように気がするけど... 擬似コードでいいから晒してみてよ。
396 名前:デフォルトの名無しさん [2008/02/11(月) 10:42:25 ] main(){ dirserch dir("c:\\windows"); cout << dir.next(); cout << dir.next(); cout << dir.next(); }
397 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 10:44:52 ] C だと不完全型を利用して隠蔽する。
398 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 10:53:10 ] Cでshared_ptrみたいなのはないの?
399 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 10:55:22 ] テンプレートが無いのが辛い所だな。 マクロで何とかできなくはないが。
400 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 10:56:52 ] それ以前にデストラクタが無いんだから仕方が無い
401 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 11:00:54 ] AddRef/Release を自前でやるなら問題ない。 面倒だけど。
402 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 11:02:11 ] COMを勉強中で、インターフェースを実装したクラスの情報を隠したいのですが 取得したものをみると、CFileの内容がくっついて来てしまいます // idl [uuid(...), version(1.0), hidden, object] interface IFile : IUnknown { HRESULT method(); } [uuid(...), version(1.0), hidden] coclass CFile { interface IFileBase; }; // 簡単なインターフェース取得 IFile * __stdcall create() { IUnknown *iface = new CFile; IFile *base = NULL; iface->QueryInterface(IID_IFile, reinterpret_cast<void**>(&base)); return base; } 属性にhidden指定するだけではだめなんでしょうか? WinXPsp2/.net2003/C++/ATL使用せず
403 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 11:08:24 ] なんで CoCreateInstance 使ってないの?
404 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 11:21:28 ] CoCreateInstanceはレジストリに登録しないと使えないと、どこかで見た記憶があり 更にDirectXのレジストリ登録を見る限り、musicしかなかったので この方法でいけるんじゃないかと思っていました CoCreateInstanceの方で調べて試してみます 指摘ありがとうございました
405 名前:388 できました [2008/02/11(月) 11:27:38 ] #include <iostream> #include <vector> #include <string> #include <windows.h> using namespace std; class dirserch{ vector <string> dirname; vector <int > dir[300]; string path[300]; int n; WIN32_FIND_DATA fd; HANDLE hd; public: dirserch(char *ch); int next(string &str); }; main(){ dirserch dr("c:\\windows"); string str; while(dr.next(str))cout<<str<<endl;} dirserch::dirserch(char *ch){ n=0; path[0]=""; dir[0].push_back(0); dirname.push_back(ch); hd=NULL;} int dirserch::next(string &str){ for(;;){ if(hd==NULL){ int k=dir[n].size()-1; if(k<0){ if(n==0)return NULL; n--; continue; } path[n+1] = path[n] + dirname[dir[n][k]] + "\\"; dir[n].resize(k); n++; hd = FindFirstFile((path[n]+"*").c_str(), &fd);} for(;;){ if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY){ if(fd.cFileName[0]!='.' || ( fd.cFileName[1]!='.' && fd.cFileName[1]!='\0' )){ int k=dirname.size(); dir[n].push_back(k); dirname.push_back(fd.cFileName);}} else { str=path[n]+fd.cFileName; if(!FindNextFile(hd, &fd)){CloseHandle(hd); hd=NULL;} return 1;} if(!FindNextFile(hd, &fd)){CloseHandle(hd); hd=NULL;break;}}}}
406 名前:388 できました [2008/02/11(月) 11:30:24 ] 全ファイル名を順番に出力する機能って基礎的だと思うのですが、標準にないので作ろうと思いましたよ
407 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 11:39:33 ] 再帰使わないの?
408 名前:388 できました [2008/02/11(月) 11:41:51 ] 再帰はつかいません パソコンにメモリ管理を任せると、鈍くなったり不安定になるからです
409 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 11:45:04 ] それだとWindowsやLinuxといったOS自体使えない理屈だが・・・
410 名前:388 できました [2008/02/11(月) 11:46:13 ] メモリというより、データをスタックへ積むコンパイラの仕組みでした
411 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 12:00:59 ] ファイルの列挙くらいは大丈夫だと思うけど
412 名前:デフォルトの名無しさん [2008/02/11(月) 12:02:05 ] 複数のファイル(1000以上)にランダムに書き込みがある時、 HDDの内蔵キャッシュやwindowsの標準キャッシュの効き目が悪くなるので バッファ付きファイル出力クラスを作ります
413 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 12:05:26 ] そうか。がんばれ
414 名前:デフォルトの名無しさん [2008/02/11(月) 12:09:05 ] double であることを明示的にするには、数字の最後にLをつければいいですか?