エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります
コードを貼れる所
http://codepad.org/
https://ideone.com/
前スレ
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1509780815/
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
2018/07/01(日) 03:44:53.53ID:4MMF8cDN
616デフォルトの名無しさん
2018/10/31(水) 07:22:13.82ID:NyWYateD >>613
お前さんの感覚なんてどうでもいい
pointer to pointer c でググると
Double Pointer (Pointer to Pointer) in C
https://www.geeksforgeeks.org/double-pointer-pointer-pointer-c/
が最初に出て来る現実を見なよ
お前さんの感覚なんてどうでもいい
pointer to pointer c でググると
Double Pointer (Pointer to Pointer) in C
https://www.geeksforgeeks.org/double-pointer-pointer-pointer-c/
が最初に出て来る現実を見なよ
617デフォルトの名無しさん
2018/10/31(水) 13:47:07.97ID:XAA9QXm2 悪貨は良貨を駆逐する
618デフォルトの名無しさん
2018/11/01(木) 05:49:53.11ID:G1B9TB4r おまえら、本当の0からの初心者にも、やさしくしろよな。
619デフォルトの名無しさん
2018/11/01(木) 11:03:26.87ID:z733lC2q 初心者だから何でも許されるというのは間違った考え
安田はジャーナリストとしては初心者
無能に仕事を任せるのは損失
安田はジャーナリストとしては初心者
無能に仕事を任せるのは損失
620デフォルトの名無しさん
2018/11/01(木) 11:45:07.51ID:JcPwSOae むしろ無能を起用した側の責任も
ジャーナリストは自己だが
ジャーナリストは自己だが
621デフォルトの名無しさん
2018/11/01(木) 19:27:13.53ID:8DVitDyR >>619
そういうお前が一番の初心者じゃねえのかw
そういうお前が一番の初心者じゃねえのかw
622デフォルトの名無しさん
2018/11/01(木) 22:02:58.74ID:ydgxPLcy プログラム全体でただ1つだけ走らせることが出来る、ある機能を提供するライブラリを作りたいんですけど
シングルトンで実装するのが一般的なんですかね よくわからん
シングルトンで実装するのが一般的なんですかね よくわからん
623デフォルトの名無しさん
2018/11/01(木) 23:40:18.35ID:BwvtJmQs それただのcの関数やんけ
staticのメンバ関数で十分
staticのメンバ関数で十分
624デフォルトの名無しさん
2018/11/02(金) 00:29:41.77ID:Jt96ZoUI スレッドの数なのか変数の数なのか
なんでライブラリがそんなことを強制せにゃならんのか
なんでライブラリがそんなことを強制せにゃならんのか
625デフォルトの名無しさん
2018/11/02(金) 00:36:09.11ID:4QeJVSF3 よくわからん状態で作って、システム停止状態になる予感
626デフォルトの名無しさん
2018/11/02(金) 00:38:05.60ID:KoqyjIsr リエントラントな関数にしとけば平気
628デフォルトの名無しさん
2018/11/02(金) 09:42:25.75ID:4QeJVSF3 未来から来た男
629627
2018/11/02(金) 11:02:16.38ID:PHrFLYGt 失礼しました。
631デフォルトの名無しさん
2018/11/02(金) 13:27:51.33ID:yBRnKDna632デフォルトの名無しさん
2018/11/02(金) 13:50:23.22ID:33vh4D4i vector<int> v{1, 2, 3, 4};
と定義して &v[0] からのバイト列にアクセスすると
01 00 00 00, 02 00 00 00, 03 00 00 00, 04 00 00 00
と連続して確保されているようですが
●これは仕様上保証されていますか?
また
vector< vector<int> > w{{1, 2}, {3, 4}};
と定義して &w[0][0] からのバイト列にアクセスすると
01 00 00 00, 02 00 00 00, ?? ?? ?? ??, ?? ?? ?? ??
後半がランダム?
になるようですが
連続に
01 00 00 00, 02 00 00 00, 03 00 00 00, 04 00 00 00
と確保されるように2次元のvectorを定義するにはどうすれば出来ますか?
それとも出来ないのでしょうか?
と定義して &v[0] からのバイト列にアクセスすると
01 00 00 00, 02 00 00 00, 03 00 00 00, 04 00 00 00
と連続して確保されているようですが
●これは仕様上保証されていますか?
また
vector< vector<int> > w{{1, 2}, {3, 4}};
と定義して &w[0][0] からのバイト列にアクセスすると
01 00 00 00, 02 00 00 00, ?? ?? ?? ??, ?? ?? ?? ??
後半がランダム?
になるようですが
連続に
01 00 00 00, 02 00 00 00, 03 00 00 00, 04 00 00 00
と確保されるように2次元のvectorを定義するにはどうすれば出来ますか?
それとも出来ないのでしょうか?
633デフォルトの名無しさん
2018/11/02(金) 13:51:24.50ID:kca9Lljk お前ら、未来と会話すんなよ
パラドックス起きるぜ
パラドックス起きるぜ
634デフォルトの名無しさん
2018/11/02(金) 13:54:46.41ID:kca9Lljk >>632
エンディアンもintサイズも固定じゃないので保証されない
エンディアンもintサイズも固定じゃないので保証されない
635デフォルトの名無しさん
2018/11/02(金) 14:03:14.42ID:Jb5Djrng vector の連続性について
ttp://cranehouse.dojin.com/program/vector.html
ttps://www.wdic.org/w/TECH/std::vector#xE3x83xA1xE3x83xA2xE3x83xAAxE3x83xBCxE3x81xAExE9x80xA3xE7xB6x9AxE6x80xA7
ttp://cranehouse.dojin.com/program/vector.html
ttps://www.wdic.org/w/TECH/std::vector#xE3x83xA1xE3x83xA2xE3x83xAAxE3x83xBCxE3x81xAExE9x80xA3xE7xB6x9AxE6x80xA7
636デフォルトの名無しさん
2018/11/02(金) 14:52:24.63ID:kca9Lljk vectorには本体データの他に管理データもあったりするので
そのvectorを作ると間にゴミに見えるデータが入りうる
そのvectorを作ると間にゴミに見えるデータが入りうる
637デフォルトの名無しさん
2018/11/02(金) 14:54:42.97ID:KQJo2ZCc ありがとうございます
int (*hoge)[要素数]; じゃなくて
int *hoge[]; みたいにポインタの配列になってるということでしょうか?
int (*hoge)[要素数]; じゃなくて
int *hoge[]; みたいにポインタの配列になってるということでしょうか?
638デフォルトの名無しさん
2018/11/02(金) 14:59:33.45ID:Jb5Djrng w[0] が返す vector の次元(大きさ)と
w[1] が返す vector の次元(大きさ)は異なっててもいい
から、そもそも論で 2次元配列 とは等価にならんし
w[1] が返す vector の次元(大きさ)は異なっててもいい
から、そもそも論で 2次元配列 とは等価にならんし
639デフォルトの名無しさん
2018/11/02(金) 15:06:38.51ID:kca9Lljk 前者だと要素追加しようとしたらどんちゃん騒ぎだよね
640デフォルトの名無しさん
2018/11/02(金) 15:14:04.01ID:KQJo2ZCc とりあえず「出来ない」という方向で仕様検討します
641デフォルトの名無しさん
2018/11/02(金) 16:46:54.30ID:ggr9EF3w642はちみつ餃子 ◆8X2XSCHEME
2018/11/02(金) 17:22:12.50ID:0I6l0gim 適当なラッパーを作って
期待する形のバイト列にするイテレータをくっつける
とかいった方法が考えられるかなぁ。
まあ場合によるけど、
大きさがコンパイル時に確定してよいのなら、
>>641 の方式が確実だと思う。
多次元配列を作る場合ってほとんどの場合はコンパイル時か
オブジェクト構築時には大きさが決まってると思うんよね。
後から伸ばしたり縮めたりってあんまりしなくなくなくなくない?
期待する形のバイト列にするイテレータをくっつける
とかいった方法が考えられるかなぁ。
まあ場合によるけど、
大きさがコンパイル時に確定してよいのなら、
>>641 の方式が確実だと思う。
多次元配列を作る場合ってほとんどの場合はコンパイル時か
オブジェクト構築時には大きさが決まってると思うんよね。
後から伸ばしたり縮めたりってあんまりしなくなくなくなくない?
643デフォルトの名無しさん
2018/11/02(金) 18:31:51.95ID:ibjOz3iU 1次元での連続性の要求は理解できるけど、2次元以降の多次元で配置の連続性の要求って何処からきてる?
思い浮かぶのが画像データぐらいだけど、それなら1次元+演算でも代用可能だし…
思い浮かぶのが画像データぐらいだけど、それなら1次元+演算でも代用可能だし…
644デフォルトの名無しさん
2018/11/02(金) 19:23:30.08ID:XwJWkHNz 2次元配列状のデータを2次元ベクタに一発で流し込めるからじゃない?
645デフォルトの名無しさん
2018/11/02(金) 23:47:26.58ID:NDSywfh9 環境に関して質問です。
windows10でcの環境作りたくて、コンパイラにminGWを入れたのですが、実行時エラーがでなくて不便です。
例えば、
char c='x';
printf("c: %s",c);
のように出力時のフォーマットを間違えたら、LinuxではRuntime error〜となにかしらエラーがでていたのに、エラーも何も出ずに(c: すら出ないで)終了します。
minGWの仕様なのか否か。
または、
windows10でminGWを使い、実行時エラーを出す方法を教えてください。
windows10でcの環境作りたくて、コンパイラにminGWを入れたのですが、実行時エラーがでなくて不便です。
例えば、
char c='x';
printf("c: %s",c);
のように出力時のフォーマットを間違えたら、LinuxではRuntime error〜となにかしらエラーがでていたのに、エラーも何も出ずに(c: すら出ないで)終了します。
minGWの仕様なのか否か。
または、
windows10でminGWを使い、実行時エラーを出す方法を教えてください。
646はちみつ餃子 ◆8X2XSCHEME
2018/11/03(土) 00:16:22.42ID:q3m1JbMq647デフォルトの名無しさん
2018/11/03(土) 00:23:55.55ID:v6aDDcip648デフォルトの名無しさん
2018/11/03(土) 00:52:51.51ID:JdxI4C+o >>647
gdbで捕捉できるんですが、gcc実行のみでRuntimeErrorを表示させるにはコンパイラ変えるしかないですかね?
もともとvmにLinux入れて、c言語を学ぼうとしてた初心者の集まりなんですが、vm重いからwindowsに移行しようと、環境設定が簡単な方法をいろいろ試してるところです。
なので、Linuxでできてたことができなくなることが不安という感じです。
gdbで捕捉できるんですが、gcc実行のみでRuntimeErrorを表示させるにはコンパイラ変えるしかないですかね?
もともとvmにLinux入れて、c言語を学ぼうとしてた初心者の集まりなんですが、vm重いからwindowsに移行しようと、環境設定が簡単な方法をいろいろ試してるところです。
なので、Linuxでできてたことができなくなることが不安という感じです。
649デフォルトの名無しさん
2018/11/03(土) 01:02:20.38ID:v6aDDcip650デフォルトの名無しさん
2018/11/03(土) 01:09:09.93ID:JSD3MLAZ たまたまアクセスしたアドレスがアクセス違反でもない限り、そもそもエラーにしようがない気がするのだけど、どうやって補足してるの?
651デフォルトの名無しさん
2018/11/03(土) 01:36:19.09ID:v6aDDcip 多分リンクするランタイムライブラリ側の仕様ではないかと
652デフォルトの名無しさん
2018/11/03(土) 04:50:14.05ID:AAuGyX2A653デフォルトの名無しさん
2018/11/03(土) 04:51:37.68ID:AAuGyX2A あ、実行時か。
Cは実行時エラーの処理も自分で補足して書くものよ?
そう言う言語としか言えない。
Cは実行時エラーの処理も自分で補足して書くものよ?
そう言う言語としか言えない。
654デフォルトの名無しさん
2018/11/03(土) 09:37:50.89ID:1nZCEE4t 不定や未定儀を自らトラップするコードを記述するのは難易度高いな… 例外が捕まれば御の字だが
655はちみつ餃子 ◆8X2XSCHEME
2018/11/03(土) 10:13:55.37ID:q3m1JbMq アドレスが 0 付近のページはプログラムミスでアクセスされやすいってことはわかっているので、
Windows でもなんか特別に予約してたような気がしたんだが、手元の資料で見つからんな……。
Windows でもなんか特別に予約してたような気がしたんだが、手元の資料で見つからんな……。
656デフォルトの名無しさん
2018/11/03(土) 11:07:57.01ID:LENdvKRs MMU付きのシステムなら、0番地をTLB missさせるのは一般的だね
けど、これ見るとwin95は違ったみたい。winNTはそうしてたみたい
Why is 0x00400000 the default base address for an executable?
https://blogs.msdn.microsoft.com/oldnewthing/20141003-00/?p=43923
けど、これ見るとwin95は違ったみたい。winNTはそうしてたみたい
Why is 0x00400000 the default base address for an executable?
https://blogs.msdn.microsoft.com/oldnewthing/20141003-00/?p=43923
657デフォルトの名無しさん
2018/11/03(土) 11:18:28.44ID:v6aDDcip 0番地ってNULLポインタ値に割り当ててなかった?
658はちみつ餃子 ◆8X2XSCHEME
2018/11/03(土) 11:26:29.27ID:q3m1JbMq >>657
NULL はあくまでも「無効なポインタ」を表し、意味のある番地ではない。
けど、うっかり意味のある番地としてアクセスしたら 0 番地だから、
その付近へのアクセスがあったらたぶん駄目なプログラムとして検出しようねっていう話。
NULL はあくまでも「無効なポインタ」を表し、意味のある番地ではない。
けど、うっかり意味のある番地としてアクセスしたら 0 番地だから、
その付近へのアクセスがあったらたぶん駄目なプログラムとして検出しようねっていう話。
659はちみつ餃子 ◆8X2XSCHEME
2018/11/03(土) 11:29:39.54ID:q3m1JbMq 今回の場合は char をポインタとして解釈してしまった場合ってことになるけど、
(0 ではないが) 0 に近いアドレスなので、その付近のページは
トラップ用に予約しておいたらあかんプログラムの検出に便利やんというわけ。
(0 ではないが) 0 に近いアドレスなので、その付近のページは
トラップ用に予約しておいたらあかんプログラムの検出に便利やんというわけ。
660はちみつ餃子 ◆8X2XSCHEME
2018/11/03(土) 11:36:04.04ID:q3m1JbMq 本筋とは関係ないけど念のために補足しておくと、ヌルポインタがゼロというのは、
そういうアーキテクチャがほとんどだと思うけど言語仕様の保証はない。
整数のゼロと互換性はあるという扱いで、
つまりは、ヌルポインタを整数にキャストするとゼロだし、
ゼロをポインタにキャストするとヌルポインタになることは保証されるが、
ヌルポインタのビットパターンが整数のゼロと等しいことは保証されない。
(なので移植性が必要ならポインタの配列を memset とかで初期化したりするのは駄目)
そういうアーキテクチャがほとんどだと思うけど言語仕様の保証はない。
整数のゼロと互換性はあるという扱いで、
つまりは、ヌルポインタを整数にキャストするとゼロだし、
ゼロをポインタにキャストするとヌルポインタになることは保証されるが、
ヌルポインタのビットパターンが整数のゼロと等しいことは保証されない。
(なので移植性が必要ならポインタの配列を memset とかで初期化したりするのは駄目)
661デフォルトの名無しさん
2018/11/03(土) 13:12:43.48ID:LENdvKRs >>ゼロをポインタにキャストするとヌルポインタになることは保証されるが
そうだっけ。定数のゼロだけでは?
そうだっけ。定数のゼロだけでは?
662はちみつ餃子 ◆8X2XSCHEME
2018/11/03(土) 14:56:28.34ID:q3m1JbMq663はちみつ餃子 ◆8X2XSCHEME
2018/11/03(土) 15:04:23.69ID:q3m1JbMq >>661-662
リテラルの 0 じゃなきゃダメなように改められたのは C++14 からだった。
リテラルの 0 じゃなきゃダメなように改められたのは C++14 からだった。
664デフォルトの名無しさん
2018/11/04(日) 13:52:28.75ID:5RY1Lh2I >printf("c: %s",c);
va_list な関数でフォーマットからパラメータの妥当性チェックって
コンパイル時に出来るもんなのか?
va_list な関数でフォーマットからパラメータの妥当性チェックって
コンパイル時に出来るもんなのか?
665デフォルトの名無しさん
2018/11/04(日) 13:54:42.83ID:zQzIf+EH >>664
無理
無理
666デフォルトの名無しさん
2018/11/04(日) 14:31:45.47ID:zimjubMH コンパイル時にprintfのフォーマットチェックくらい出来る
667デフォルトの名無しさん
2018/11/04(日) 14:35:28.83ID:niqPtY0w >>664
標準ライブラリ関数みたいに、コンパイラ作成時点で仕様が確定してれば可能。
https://wandbox.org/permlink/d1F80sYjt6FhgjY8
> prog.cc:5:19: warning: format specifies type 'char *' but the argument has type 'int' [-Wformat]
標準ライブラリ関数みたいに、コンパイラ作成時点で仕様が確定してれば可能。
https://wandbox.org/permlink/d1F80sYjt6FhgjY8
> prog.cc:5:19: warning: format specifies type 'char *' but the argument has type 'int' [-Wformat]
668はちみつ餃子 ◆8X2XSCHEME
2018/11/05(月) 15:55:21.21ID:ZanvjWBP 逆に言えばコンパイラが特別扱いする必要があるってことだね。
669デフォルトの名無しさん
2018/11/05(月) 22:44:26.18ID:3jCTliha 面倒なので出力書式には%sのみを使うこととし引数の型の分だけstringに変換する同名関数用意して必ず文字列にしてしまうという力技
670デフォルトの名無しさん
2018/11/06(火) 11:51:03.34ID:rqFrnjhJ >>669
オブジェクト指向的にはそれが正解なんだよな
オブジェクト指向的にはそれが正解なんだよな
671デフォルトの名無しさん
2018/11/06(火) 12:45:23.65ID:ARgE5xEK >>669
まあ結局どこかで文字列化するんだからその考え方もありだね
まあ結局どこかで文字列化するんだからその考え方もありだね
672デフォルトの名無しさん
2018/11/06(火) 13:01:56.11ID:tKDIv/D4 cout << left << hex << showbase << setfill('0') << setw(8) << i << eol;
より
cout << i.tostring("0x%-08x") << eol;
とかなら %書式 にはあまりこだわらないんだけど
前者の仕様だと %書式 の方が描きやすいから
結局普及しない原因
より
cout << i.tostring("0x%-08x") << eol;
とかなら %書式 にはあまりこだわらないんだけど
前者の仕様だと %書式 の方が描きやすいから
結局普及しない原因
673デフォルトの名無しさん
2018/11/07(水) 23:51:04.79ID:JJvWWnsQ よくint型のサイズとかエンディアンが処理系依存って解説を目にしますが
この「処理系」ってコンパイルするマシンのCPUですか?
それともプログラムを実行するマシンのCPUですか?
この「処理系」ってコンパイルするマシンのCPUですか?
それともプログラムを実行するマシンのCPUですか?
674デフォルトの名無しさん
2018/11/07(水) 23:57:40.81ID:vv5bGR61 >>673
コンパイルするプログラムや出来たプログラムを実行するOSやハードウェアなどの諸々の環境
コンパイルするプログラムや出来たプログラムを実行するOSやハードウェアなどの諸々の環境
676デフォルトの名無しさん
2018/11/08(木) 00:05:29.53ID:M68F6j6d ターゲットになる処理系にあわせてコンパイルするからな
べつにターゲットになる処理系でコンパイルする必要はない
べつにターゲットになる処理系でコンパイルする必要はない
677673
2018/11/08(木) 00:44:14.28ID:ZMRuomnT ありがとうございます
ちょっとプログラムを見直してみます
ちょっとプログラムを見直してみます
678デフォルトの名無しさん
2018/11/08(木) 10:49:50.86ID:2uuB+50R679デフォルトの名無しさん
2018/11/08(木) 21:31:49.37ID:2V1Zc+AV constexpr char *mes[] ={(char *)"error", (char *)"ok" ,(char *)"abc"};
みたいにキャストしないとワーニングがでるんだが、めんどくさいね。なんか方法ないの?
みたいにキャストしないとワーニングがでるんだが、めんどくさいね。なんか方法ないの?
680デフォルトの名無しさん
2018/11/08(木) 21:41:57.89ID:YKdO2F6s constexpr const char *mes[] ={"error", "ok" , "abc"};
constexprが何にかかっていたか考えてみれ
constexprが何にかかっていたか考えてみれ
681デフォルトの名無しさん
2018/11/09(金) 03:42:19.86ID:RK/u55Qe constつけたらワーニングが無くなるのだろうか? 何故なくなるの?
ポインタにかかるのか、ポインタの中身にかかるのか?という問いだろうけれども恐らくはポインタ自体
にかかるのだろう。そしてconstがポインタの中身にかかる。順番が逆だといろいろ不都合がしょうじる
から、このようになる筈だ。
しかし、constを追加しただけでwarnningが消える理由はなんなのだろうか? (char*)でキャストするのと
同じ効果を持ちうるのはなぜか? constにはそんな意味はない。「単に書き換えできないようにする」
と言う意味だろう。書き換えできないsringももちろんあるから矛盾が生じるのだ。その矛盾を
解決する可能性があるとすれば書き換えできないstringがすなわちchar*と同じである場合に限る。
つまり
const string とは char* の事なのだ。
あってる?
もしあってるとすれば、
constexpr (char*) char *mes[] ={"error", "ok" , "abc"};
でもOKな筈だね。そうでないと矛盾する。この方が分かりやすいね。
ポインタにかかるのか、ポインタの中身にかかるのか?という問いだろうけれども恐らくはポインタ自体
にかかるのだろう。そしてconstがポインタの中身にかかる。順番が逆だといろいろ不都合がしょうじる
から、このようになる筈だ。
しかし、constを追加しただけでwarnningが消える理由はなんなのだろうか? (char*)でキャストするのと
同じ効果を持ちうるのはなぜか? constにはそんな意味はない。「単に書き換えできないようにする」
と言う意味だろう。書き換えできないsringももちろんあるから矛盾が生じるのだ。その矛盾を
解決する可能性があるとすれば書き換えできないstringがすなわちchar*と同じである場合に限る。
つまり
const string とは char* の事なのだ。
あってる?
もしあってるとすれば、
constexpr (char*) char *mes[] ={"error", "ok" , "abc"};
でもOKな筈だね。そうでないと矛盾する。この方が分かりやすいね。
682デフォルトの名無しさん
2018/11/09(金) 04:05:10.44ID:RK/u55Qe そしてワーニングはすべてきえたが、エラーになった。w
683デフォルトの名無しさん
2018/11/09(金) 04:08:12.56ID:RK/u55Qe constexpr const char *mes[] ={"error", "ok" , "abc"};
これをクラスのなかで定義したいのだが、クラスの中で定義するとエラーになる。クラス内だけで使いたいのに
外部に引き出すのは面倒だ。どうしたらいいの?
これをクラスのなかで定義したいのだが、クラスの中で定義するとエラーになる。クラス内だけで使いたいのに
外部に引き出すのは面倒だ。どうしたらいいの?
684デフォルトの名無しさん
2018/11/09(金) 08:48:09.13ID:B4AEy6G3 static
685はちみつ餃子 ◆8X2XSCHEME
2018/11/09(金) 11:35:02.44ID:yH/J6wNO >>681
書いている意味はさっぱりわからんが、文字列リテラルの型は const char[] だ。
そんでもって >>679 の場合の文字列リテラルは暗黙の型変換で const char* になる。
const char* を char* に入れようとしたら型が合わないがキャストで無理やり合わせることも出来るという簡単な話。
だが、型から const を剥がしたからといって文字列リテラルを書き換えてよくなるわけではない。 (← 重要!)
const を剥がすだけなら問題はないが、
書き換えたら駄目 (未定義) にもかかわらず型から const を外すのは馬鹿馬鹿しい間違いの元。
よくわからんままキャストしたら警告が消えた〜〜っていうのはC/C++ の歴史で何十年も繰返してるので
古参ならうんざりするほど見てきた駄目なパターンだと思う。
とりあえずキャストってのはほんとにやめて……。
(ちなみに C では文字列リテラルの型は char[] だが、書き換えるのは未定義ってことになってるという更なる闇がある)
書いている意味はさっぱりわからんが、文字列リテラルの型は const char[] だ。
そんでもって >>679 の場合の文字列リテラルは暗黙の型変換で const char* になる。
const char* を char* に入れようとしたら型が合わないがキャストで無理やり合わせることも出来るという簡単な話。
だが、型から const を剥がしたからといって文字列リテラルを書き換えてよくなるわけではない。 (← 重要!)
const を剥がすだけなら問題はないが、
書き換えたら駄目 (未定義) にもかかわらず型から const を外すのは馬鹿馬鹿しい間違いの元。
よくわからんままキャストしたら警告が消えた〜〜っていうのはC/C++ の歴史で何十年も繰返してるので
古参ならうんざりするほど見てきた駄目なパターンだと思う。
とりあえずキャストってのはほんとにやめて……。
(ちなみに C では文字列リテラルの型は char[] だが、書き換えるのは未定義ってことになってるという更なる闇がある)
686デフォルトの名無しさん
2018/11/09(金) 11:51:24.81ID:p9aTnaT/ x ワーニング
△ ウォーニング
△ ウォーニング
687はちみつ餃子 ◆8X2XSCHEME
2018/11/09(金) 12:19:21.70ID:yH/J6wNO >>686
カタカナにする時点で元の発音からずれまくりなので×も△も五十歩百歩だろ。
カタカナにする時点で元の発音からずれまくりなので×も△も五十歩百歩だろ。
688デフォルトの名無しさん
2018/11/09(金) 12:31:06.48ID:OW/zGENl ウォァニンぐらいでもOK
689デフォルトの名無しさん
2018/11/09(金) 12:33:34.59ID:LkGmFgiv 五十歩くらいマシ
690デフォルトの名無しさん
2018/11/09(金) 12:36:43.84ID:OW/zGENl pingをピングと言っちゃう国だから大丈夫だ
691デフォルトの名無しさん
2018/11/09(金) 12:44:17.18ID:CtgAvQda 壊れかけのレイディオ
692デフォルトの名無しさん
2018/11/09(金) 12:46:06.80ID:p9aTnaT/ KING KONG
693デフォルトの名無しさん
2018/11/09(金) 13:58:07.89ID:s4ONASkx694デフォルトの名無しさん
2018/11/09(金) 13:59:30.86ID:s4ONASkx ウォーニングが×
ワーニングの方がまし
ワーニングの方がまし
695デフォルトの名無しさん
2018/11/09(金) 15:56:52.94ID:6nxjQRlc >>693
アホ
アホ
696デフォルトの名無しさん
2018/11/09(金) 17:01:38.84ID:s4ONASkx 今調べてきた。確かにwikiとかでもウォーニングってなってんな
発音記号もcの逆みたいのが使われている
でも実際の発音を聞くと、あの方が近いぞ。まあどっちでもええわ
発音記号もcの逆みたいのが使われている
でも実際の発音を聞くと、あの方が近いぞ。まあどっちでもええわ
697デフォルトの名無しさん
2018/11/09(金) 19:27:01.40ID:PDy1KIPj 君のアナルはウサイン・ボルト
698デフォルトの名無しさん
2018/11/09(金) 19:47:28.26ID:gcFuq4sF 「警告」で良いだろう
699デフォルトの名無しさん
2018/11/09(金) 20:21:57.93ID:GUqFOdkW 5chで発音ガーとか何回見たことか…
なのでそういう奴が居そうなスレでは原語(warning)で書くのが基本
なのでそういう奴が居そうなスレでは原語(warning)で書くのが基本
700デフォルトの名無しさん
2018/11/09(金) 21:19:39.32ID:RK/u55Qe 「文字列リテラル型」って表現はよくわからない。文字列はリテラルじゃないの?
文字列のリテラル型というのであればリテラル型でない文字列ってあるんだろうか?
リテラルって何? 英語をやくしたら文字列って意味だろ。
文字列のリテラル型というのであればリテラル型でない文字列ってあるんだろうか?
リテラルって何? 英語をやくしたら文字列って意味だろ。
701デフォルトの名無しさん
2018/11/09(金) 21:21:10.22ID:OW/zGENl 即値というこれまた訳のわからない訳が出てくるからw
702デフォルトの名無しさん
2018/11/09(金) 21:29:35.20ID:RK/u55Qe A character literal is a type of literal in programming for the representation of a single character's value within the source code of a computer program.
「文字列リテラル」ってキャラクターリテラルのことだろうか?
それなら日本語にすると「文字列」でOKと思う。文字列リテラルって文字列列ってことか?
つまりA character literal literal **str のこと?
「文字列リテラル」ってキャラクターリテラルのことだろうか?
それなら日本語にすると「文字列」でOKと思う。文字列リテラルって文字列列ってことか?
つまりA character literal literal **str のこと?
703デフォルトの名無しさん
2018/11/09(金) 21:30:17.80ID:D+VwENVN char a[] = "abcd";
左辺のaが文字列で 右辺の "abcd" が文字列リテラル
左辺のaが文字列で 右辺の "abcd" が文字列リテラル
704デフォルトの名無しさん
2018/11/09(金) 21:31:35.81ID:RK/u55Qe それなら文字列配列だよな。
705デフォルトの名無しさん
2018/11/09(金) 21:33:21.78ID:D+VwENVN のんのん \0終端の文字配列 で 文字列になねるー
706デフォルトの名無しさん
2018/11/09(金) 21:33:25.58ID:RK/u55Qe707デフォルトの名無しさん
2018/11/09(金) 21:39:02.77ID:RK/u55Qe literalって頭が固くて融通が利かないって意味があるみたいだから、”abc”というように値が固定した
文字列って意味なんだね。
ということは
char literal 'a'
char literal "abc"
int literal 0x111
ということか。
文字列って意味なんだね。
ということは
char literal 'a'
char literal "abc"
int literal 0x111
ということか。
708デフォルトの名無しさん
2018/11/09(金) 21:40:08.63ID:RK/u55Qe まちがってる
char [] literal --> "abc"
char [] literal --> "abc"
709デフォルトの名無しさん
2018/11/09(金) 21:41:35.53ID:OW/zGENl 無名定数って感じかな
710デフォルトの名無しさん
2018/11/09(金) 21:56:52.98ID:9K071fMF "literal"って「文字通り」ってことだろう。
ソースコード中に埋め込まれた、値そのものを表す記述のこと。
ソースコード中に埋め込まれた、値そのものを表す記述のこと。
711デフォルトの名無しさん
2018/11/10(土) 01:12:58.35ID:4XqvBzsA int a = 10;
の「10」もリテラル
の「10」もリテラル
712はちみつ餃子 ◆8X2XSCHEME
2018/11/10(土) 01:32:44.99ID:BAJLxFPC リテラル型という用語もあるが、リテラル型がいわゆる「リテラル」とは限らないので気を付けてな。
713デフォルトの名無しさん
2018/11/10(土) 04:45:24.06ID:p/77GMIT >よくわからんままキャストしたら警告が消えた〜〜っていうのはC/C++ の歴史で何十年も繰返してるので
>古参ならうんざりするほど見てきた駄目なパターンだと思う。
>とりあえずキャストってのはほんとにやめて……。
void uprint( char * message);
こういう関数って普通にあると思うが、そうすると
uprint((char *)"abc");
こんなふうにキャストしないでwarnigを取る方法ってありますの?
そもそも関数の定義の仕方が悪いって意見? C++ってcと混在一体で使うところに多大な
メリットがあるわけで、cだとstringとか使えないし、どうすりゃいいのよ。
>古参ならうんざりするほど見てきた駄目なパターンだと思う。
>とりあえずキャストってのはほんとにやめて……。
void uprint( char * message);
こういう関数って普通にあると思うが、そうすると
uprint((char *)"abc");
こんなふうにキャストしないでwarnigを取る方法ってありますの?
そもそも関数の定義の仕方が悪いって意見? C++ってcと混在一体で使うところに多大な
メリットがあるわけで、cだとstringとか使えないし、どうすりゃいいのよ。
714デフォルトの名無しさん
2018/11/10(土) 04:56:10.50ID:p/77GMIT あっ、わかった。C++の場合はvoid uprint( const char * message); も作っておけばいいのか。
納得。
納得。
715デフォルトの名無しさん
2018/11/10(土) 06:25:16.23ID:7XNdxnac >>702
>for the representation of a single character's value
a がついてるだろ。 つまりこれは1文字のことを言ってるんであって、複数文字ではないよ
で、主語を見ると、A character literalってあるから、そもそもこれは1キャラクタのリテラルの定義
なので、複数キャラ、単語等のリテラルの定義は他にあるはず
>for the representation of a single character's value
a がついてるだろ。 つまりこれは1文字のことを言ってるんであって、複数文字ではないよ
で、主語を見ると、A character literalってあるから、そもそもこれは1キャラクタのリテラルの定義
なので、複数キャラ、単語等のリテラルの定義は他にあるはず
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「日本はドイツと違い反省せず」…中国外相、独外相に対日批判 台湾問題で理解求める [少考さん★]
- 【おこめ券】鈴木農相 米価維持の意図「一切ない」 [ぐれ★]
- 【警視庁】走行中の電車で女性に露出した下半身押しつけたか 無職の男(46)逮捕「チャンスがあればいつでもやる」 [nita★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★6 [七波羅探題★]
- 【苺ましまろ】立民衆院議員、人気漫画の水着少女画像を「醜悪」タイ人少女の性搾取事件と関連付け…党内で反発 [少考さん★]
- 「残業キャンセル界隈」若者が増加?「職務放棄」との批判も…“定時退社の権利”どこまで通用するか [七波羅探題★]
- 高市政権「かけてもつながらない。機能していない」防衛当局間のホットライン機能せず [834922174]
- あたしゃやだよ
- 【高市悲報】中国軍「公海で空母の発着訓練するって事前通告したのになんで自衛隊機は急接近してきたんだ…?」中国軍困惑 [931948549]
- 【高市悲報】中国軍「公海で空母の発着訓練するって事前通告したのになんで自衛隊機は急接近してきたんだ…?」中国軍困惑★2 [931948549]
- 30過ぎた大人おじさんが大学生(昔)のままのファッションをする「おじさんキッズコーデ」、炎上して問題視される。 [153490809]
- 【朗報】ケンモジサンが買うふりかけ、二択に絞られる [394133584]
