エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります
コードを貼れる所
http://codepad.org/
https://ideone.com/
前スレ
【初心者歓迎】C/C++室 Ver.101【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1500329247/
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2017/11/04(土) 16:33:35.07ID:NYxCuvMY252デフォルトの名無しさん
2018/03/11(日) 10:55:00.37ID:zWe+i43K Win32APIスレは限定的だからGUI一般スレみたいなのの方を紹介しようと思ったが面倒なので
次の方どうぞ
↓
次の方どうぞ
↓
253デフォルトの名無しさん
2018/03/11(日) 11:28:30.29ID:1J69PCFW >>251
どうも
どうも
254デフォルトの名無しさん
2018/03/12(月) 02:15:34.18ID:Cvix3isA 何度も呼ばれる関数内ではローカル変数をstaticにした方が速いのですか?
256デフォルトの名無しさん
2018/03/12(月) 02:23:59.34ID:Cvix3isA >>255
さいですか ありがとうございました
さいですか ありがとうございました
257デフォルトの名無しさん
2018/03/12(月) 02:50:45.99ID:SGROmA8V 皆様はプログラムを遅くし過ぎない為に気をつけている事などありますか?
速さを突き詰める為の工夫というより、誤って異常に処理時間のかかるようなプログラムを作らないようにする為にはどのような事を意識すると良いのでしょうか
速さを突き詰める為の工夫というより、誤って異常に処理時間のかかるようなプログラムを作らないようにする為にはどのような事を意識すると良いのでしょうか
258デフォルトの名無しさん
2018/03/12(月) 03:02:50.40ID:9wDOvV2B staticの方が速い理由なんて一つも無いような
あまり呼ばれない場合はstaticの方が遅いよね、キャッシュ的に
マルチスレッドで邪魔だし、必要がある時以外は使うもんじゃないよ
あまり呼ばれない場合はstaticの方が遅いよね、キャッシュ的に
マルチスレッドで邪魔だし、必要がある時以外は使うもんじゃないよ
259デフォルトの名無しさん
2018/03/12(月) 03:20:38.17ID:IdW8RVi3 >>257
メモリアクセスのコストだあ
メモリアクセスのコストだあ
260デフォルトの名無しさん
2018/03/12(月) 03:57:56.72ID:SGROmA8V >>258
多分、メモリを毎回確保し直す事や、コンストラクタを何度も呼ぶ事により処理が遅くなると考えたのではないでしょうか
多分、メモリを毎回確保し直す事や、コンストラクタを何度も呼ぶ事により処理が遅くなると考えたのではないでしょうか
261デフォルトの名無しさん
2018/03/12(月) 04:48:35.89ID:Ajs1ZroQ262デフォルトの名無しさん
2018/03/12(月) 08:13:41.87ID:0T8K0H1S >>257
ファイルアクセスのような重い処理とか深いループの中の計算処理とかは必要に応じて適切なデータ構造やアルゴリズムをあらかじめ検討しておくけど、頻度が少なく問題にならない箇所は分かりやすさ実装しやすさ優先で無理に速度は追求しないかな。
あとは将来的に性能改善が必要になることもあり得るから基本的には柔軟性のある変更に強い設計を普段から意識しておくとか。
ファイルアクセスのような重い処理とか深いループの中の計算処理とかは必要に応じて適切なデータ構造やアルゴリズムをあらかじめ検討しておくけど、頻度が少なく問題にならない箇所は分かりやすさ実装しやすさ優先で無理に速度は追求しないかな。
あとは将来的に性能改善が必要になることもあり得るから基本的には柔軟性のある変更に強い設計を普段から意識しておくとか。
263はちみつ餃子 ◆8X2XSCHEME
2018/03/12(月) 12:47:06.75ID:wZFlYBXj 計算量とかメモリ使用量のオーダーは気にするけど、オーダーが変わらないレベルの差はそんなに気にしてもしょうがない。
264デフォルトの名無しさん
2018/03/12(月) 16:25:47.91ID:JoWTM6VO265デフォルトの名無しさん
2018/03/12(月) 17:58:03.22ID:WDt4qsqW 待て待て、>>257は速度追求の話ではないだろう
無駄なループを通らせないとかそういう話でしょ?
無駄なループを通らせないとかそういう話でしょ?
266はちみつ餃子 ◆8X2XSCHEME
2018/03/13(火) 04:04:12.70ID:jwCzlKtk エッジケースで極端なことになってしまうって話かな?
そういうのは単に気をつけるしかしゃーない。
発覚したときに直せるような体制にしておけ〜
そういうのは単に気をつけるしかしゃーない。
発覚したときに直せるような体制にしておけ〜
267デフォルトの名無しさん
2018/03/13(火) 11:25:42.37ID:nL3Sy1ZA268デフォルトの名無しさん
2018/03/13(火) 11:43:48.99ID:WyB9s+s4 クラスAのメンバ関数へのアクセスをクラスBのみに許すにはどうすればいいですか?
(メンバ関数をfriend指定するのはBがAのプライベートメンバにもアクセスできてしまうのでNGです)
(メンバ関数をfriend指定するのはBがAのプライベートメンバにもアクセスできてしまうのでNGです)
269デフォルトの名無しさん
2018/03/13(火) 13:15:04.74ID:WyB9s+s4 自己解決
passkeyイディオムを使えばいいんですね
言語仕様でサポートしてほしい気もしますが
passkeyイディオムを使えばいいんですね
言語仕様でサポートしてほしい気もしますが
270デフォルトの名無しさん
2018/03/15(木) 23:07:46.82ID:rOhYRyTV できる人にとってはくだらないことなんだと思うのですが、
char* c;
char *c;
この2つは一緒なのですか?
char* c;
char *c;
この2つは一緒なのですか?
271デフォルトの名無しさん
2018/03/15(木) 23:12:48.58ID:jcfpYhJu char * c;
とか
char
*
c
;
も含めて一緒
とか
char
*
c
;
も含めて一緒
>>270
一緒ですが個人的に後者を推奨します
一緒ですが個人的に後者を推奨します
273デフォルトの名無しさん
2018/03/15(木) 23:21:50.62ID:rOhYRyTV274デフォルトの名無しさん
2018/03/15(木) 23:24:52.27ID:dUMa9unA275はちみつ餃子 ◆8X2XSCHEME
2018/03/15(木) 23:48:02.28ID:VBbQqJBt ワイはアスタリスクを型名の方に寄せて、複数の変数の宣言をまとめないスタイルを推しておるやぞ。
char* a;
char* b;
まあ人によって色々やね。
char* a;
char* b;
まあ人によって色々やね。
276デフォルトの名無しさん
2018/03/15(木) 23:48:51.41ID:ipLBerzI そんな迷うならtypedefしてしまえ
277はちみつ餃子 ◆8X2XSCHEME
2018/03/15(木) 23:52:42.60ID:VBbQqJBt C++ なら std::add_pointer を使うのも手やぞ。
普段から使うには綴りが長い気もするな。
普段から使うには綴りが長い気もするな。
278デフォルトの名無しさん
2018/03/16(金) 00:04:03.30ID:/SwLgzhl ワイも後ろに寄せるスタイルの方が好きやな
別に自由ではあるけど、前に寄ってるとなんか違和感あるわ
別に自由ではあるけど、前に寄ってるとなんか違和感あるわ
279デフォルトの名無しさん
2018/03/16(金) 00:12:21.27ID:eqCACABM この話始まるとスレが荒れるわけだが。
俺は
char *a;
int & ref;
だ。
俺は
char *a;
int & ref;
だ。
280はちみつ餃子 ◆8X2XSCHEME
2018/03/16(金) 00:27:41.31ID:5DWUPgeG C++ だとスッポスッポ先生が (というより D&E の文中にあるコードが) アスタリスクを型名にくっつけるスタイルで書いてあるから、
設計者的にはこれが推しなんやろなて思うたんや。
設計者的にはこれが推しなんやろなて思うたんや。
281デフォルトの名無しさん
2018/03/16(金) 00:49:37.90ID:7Nt6p3N1 そもそもCならまだわかるがC++になってもこの謎仕様が改善されてないのがおかしいわな
282デフォルトの名無しさん
2018/03/16(金) 01:19:43.79ID:pAByTZwR char *a;派だがキャストは(char*)だな
283デフォルトの名無しさん
2018/03/16(金) 06:18:52.71ID:hczQTGC7 両方に空白入れたり
両方詰めたらどうなるん
両方詰めたらどうなるん
284デフォルトの名無しさん
2018/03/16(金) 10:14:04.60ID:x1iYgKqh >>275
これ
これ
285デフォルトの名無しさん
2018/03/16(金) 16:35:23.76ID:3ma6aQHv286デフォルトの名無しさん
2018/03/16(金) 18:15:24.73ID:tA4eZSmU ``int* p;''と``int *p;''はどちらが正しいですか
http://www.libjingu.jp/trans/bs_faq2-j.html#whitespace
まあハゲの影響はあると思う
http://www.libjingu.jp/trans/bs_faq2-j.html#whitespace
まあハゲの影響はあると思う
287デフォルトの名無しさん
2018/03/16(金) 18:16:24.05ID:YfjbsaKN 偉い人が前で統一させてたから倣ってる
288デフォルトの名無しさん
2018/03/16(金) 19:01:00.72ID:EjV6B4+T >>285
マイクロソフトじゃないか?
マイクロソフトじゃないか?
289デフォルトの名無しさん
2018/03/16(金) 22:46:14.86ID:KxYkqF9B []演算子は変数の後ろしか置けないので迷いがない
290デフォルトの名無しさん
2018/03/16(金) 22:50:13.34ID:r/T+njCz 変数との間に空白を入れるか入れないか選択の余地がある
291デフォルトの名無しさん
2018/03/16(金) 23:05:45.65ID:/SwLgzhl 正直、選択の余地が無い方が嬉しい
292デフォルトの名無しさん
2018/03/16(金) 23:17:53.08ID:7Nt6p3N1 ある意味欠陥の1つ
293デフォルトの名無しさん
2018/03/16(金) 23:24:49.74ID:YbTBBkUF >>289
リテラルの後ろにも置ける
リテラルの後ろにも置ける
294デフォルトの名無しさん
2018/03/16(金) 23:28:34.45ID:/SwLgzhl あと数字の後ろにも置けるよな確か
x[2]は2[x]でも普通に動作するらしい、使ったことはないが
x[2]は2[x]でも普通に動作するらしい、使ったことはないが
295デフォルトの名無しさん
2018/03/16(金) 23:32:56.43ID:W1kNbC1+ 参照型&ってあまり使われないのか
296デフォルトの名無しさん
2018/03/17(土) 02:01:02.93ID:UGDcJiJh >>293
宣言の中の型としての*の位置を問題にしてるのだから、式の中での*が使える位置については別の話でしょ。
宣言の中の型としての*の位置を問題にしてるのだから、式の中での*が使える位置については別の話でしょ。
297デフォルトの名無しさん
2018/03/17(土) 17:02:13.24ID:B2oEmArJ インデントってタブ文字使うよりもスペース使った方がいいんですか?
299デフォルトの名無しさん
2018/03/17(土) 17:32:05.08ID:Ak7laUjo タブコードはエディタの設定に見た目が左右されるので使わない方がいい
300デフォルトの名無しさん
2018/03/17(土) 17:39:18.45ID:B2oEmArJ うーん、やっぱりタブは使うべきではないんですね
301デフォルトの名無しさん
2018/03/17(土) 17:41:47.51ID:Ak7laUjo 昔は1バイト当たり単価が高かったからね
302デフォルトの名無しさん
2018/03/17(土) 20:01:33.65ID:hl7Y0kGo エディタの機能向上による要素が大きいな。
インデントやその削除にキーを何度も叩かなきゃならない状態だったらTABがまだ主流だったろう。
インデントやその削除にキーを何度も叩かなきゃならない状態だったらTABがまだ主流だったろう。
303デフォルトの名無しさん
2018/03/17(土) 22:45:16.37ID:NcDC59dQ >>294
初めて知ったw
初めて知ったw
304はちみつ餃子 ◆8X2XSCHEME
2018/03/18(日) 04:35:20.62ID:7ElIFee1 >>294
他にも変な仕組みは色々とあるけど、これはひとつとして使いどころが思いつかんよな。
他にも変な仕組みは色々とあるけど、これはひとつとして使いどころが思いつかんよな。
305デフォルトの名無しさん
2018/03/18(日) 06:08:40.04ID:QnqZv5w6 int a[10]; で a[5] でも 5[a] でも同じようにアクセスできるのは、
a[5] と *(a + 5) が同等で + 演算子の交換可能性から *(5 + a) も可、
それなら 5[a] も同じじゃなきゃ片手落ちだよね、って発想というか、
過去のコンパイラの実装とも関係がありそうな気がする。
もちろん、古いCコンパイラとのソース互換性が問題になるほど
みんなが使ってた書き方とは思わないけど。
a[5] と *(a + 5) が同等で + 演算子の交換可能性から *(5 + a) も可、
それなら 5[a] も同じじゃなきゃ片手落ちだよね、って発想というか、
過去のコンパイラの実装とも関係がありそうな気がする。
もちろん、古いCコンパイラとのソース互換性が問題になるほど
みんなが使ってた書き方とは思わないけど。
>>304
IOCCC …
IOCCC …
307デフォルトの名無しさん
2018/03/20(火) 16:56:43.36ID:PiAC+2Zr i++ と ++iって最適化すればほとんど変わらないか、あるいは++iの方がちょっと速いくらいですよね?
なんでi++の方がデファクトスタンダードみたいになってるんでしょう?
ほぼ無視できる程度のメリットしかないとしても、++iと書くデメリットがないと思うのですが
なんでi++の方がデファクトスタンダードみたいになってるんでしょう?
ほぼ無視できる程度のメリットしかないとしても、++iと書くデメリットがないと思うのですが
308はちみつ餃子 ◆8X2XSCHEME
2018/03/20(火) 18:20:40.65ID:N1yoGURK >>307
インクリメントの対象が整数しかなかった C からの習慣がなんとなく引き継がれてるだけ。
後インクリメントは気持ち悪いと考える人は少なくはないし、
値を使わないなら前インクリメントにするのは C++ では良い習慣だよ。
インクリメントの対象が整数しかなかった C からの習慣がなんとなく引き継がれてるだけ。
後インクリメントは気持ち悪いと考える人は少なくはないし、
値を使わないなら前インクリメントにするのは C++ では良い習慣だよ。
309デフォルトの名無しさん
2018/03/20(火) 20:17:17.59ID:UFFOOrdu ++C言語
310デフォルトの名無しさん
2018/03/20(火) 20:18:05.88ID:O958tZqO311デフォルトの名無しさん
2018/03/20(火) 22:04:48.60ID:+J5xJfYE Cでインクリメントやデクリメントに後置が使われがちな理由は
a = *p++; みたいなポインタの使い方で手が慣れたせいもあるかと思う。
C++では性能的な理由で前置が好まれたのは指摘のとおり。
個人的には、どっちでも構わない場面ではCでは後置、C++では前置で書くかな。
特に単純なforで++iと打つと、途端にC++で書いてる気がしてくる。
a = *p++; みたいなポインタの使い方で手が慣れたせいもあるかと思う。
C++では性能的な理由で前置が好まれたのは指摘のとおり。
個人的には、どっちでも構わない場面ではCでは後置、C++では前置で書くかな。
特に単純なforで++iと打つと、途端にC++で書いてる気がしてくる。
312デフォルトの名無しさん
2018/03/20(火) 22:08:04.94ID:I2zEd3jr 本当に性能に差が出たの?測ったの?
313デフォルトの名無しさん
2018/03/20(火) 23:46:13.85ID:ZVuOcNlA GCC 6.4.0 最適化なしで計測してみたけど、平均的な差は無いな
314デフォルトの名無しさん
2018/03/21(水) 00:00:26.00ID:2Gb2uvWn 単純なforなら同じコード吐くんじゃね?
315デフォルトの名無しさん
2018/03/21(水) 00:36:19.45ID:OwhHF7Zm 単純な整数型のインクリメントなら前置も後置もさが無いだろうけど、C++ではユーザー定義のクラスでインクリメントを実装できるから、
基本的には更新前のオブジェクトの状態の退避などの処理が必要な後置インクリメントよりコストの少ない前置インクリメントが好まれるのだと思うよ。
基本的には更新前のオブジェクトの状態の退避などの処理が必要な後置インクリメントよりコストの少ない前置インクリメントが好まれるのだと思うよ。
316はちみつ餃子 ◆8X2XSCHEME
2018/03/21(水) 01:30:43.51ID:MouF+uE4 結果が使われないことが明らかな場合には後インクリメントのかわりに前インクリメントを呼び出すとかいったことをしても
ほとんどのコードは壊れないと思うんだけど、そういうルールを言語仕様に追加するのはもう出来ないかなぁ?
ほとんどのコードは壊れないと思うんだけど、そういうルールを言語仕様に追加するのはもう出来ないかなぁ?
317デフォルトの名無しさん
2018/03/21(水) 01:40:04.19ID:CmybL5Dk まぁ、出来るなら既にやってるでしょ
ぶっちゃけ、よっぽどシビアに速度を求める訳でないなら前置後置の差なんて気にする必要無いんじゃないかなぁ
ぶっちゃけ、よっぽどシビアに速度を求める訳でないなら前置後置の差なんて気にする必要無いんじゃないかなぁ
318デフォルトの名無しさん
2018/03/21(水) 19:45:28.97ID:2N3cG+sW そもそも速度を気にして
記述を変えるって
間違ってる気がする・・
記述を変えるって
間違ってる気がする・・
319デフォルトの名無しさん
2018/03/21(水) 19:50:40.96ID:eUhtaSa6 時代は変わったか
昔はそんな事は当たり前だった
昔はそんな事は当たり前だった
320デフォルトの名無しさん
2018/03/21(水) 19:51:54.96ID:eUhtaSa6 機能に対して糞重いソフトが多いのも
ソフトに対する価値観が変わったからか
ソフトに対する価値観が変わったからか
321はちみつ餃子 ◆8X2XSCHEME
2018/03/21(水) 19:55:34.20ID:MouF+uE4 >>318
速度を気にするというのもあるけど、意味的にも無意味な処理をするってのがダサいだろ?
速度を気にするというのもあるけど、意味的にも無意味な処理をするってのがダサいだろ?
322デフォルトの名無しさん
2018/03/21(水) 20:23:31.47ID:NRxI71LE323デフォルトの名無しさん
2018/03/21(水) 20:37:50.64ID:L8aCdycT 本スレでやれ
324デフォルトの名無しさん
2018/03/21(水) 20:54:50.63ID:b8e3mX8M 手間が変わらず、かつデメリットもないのにその選択肢を取らない理由がなくない?
後置の方が保守性が高いとか可読性が高いならともかく、そうじゃないんだから天秤にかける必要さえない
後置の方が保守性が高いとか可読性が高いならともかく、そうじゃないんだから天秤にかける必要さえない
325デフォルトの名無しさん
2018/03/21(水) 20:59:28.52ID:CmybL5Dk >>321
それで見やすくなるなら別にいんじゃね
それで見やすくなるなら別にいんじゃね
326デフォルトの名無しさん
2018/03/21(水) 22:35:08.33ID:TV3lE0eZ 効率を言い出すと値を返さないインクリメント、デクリメントが標準で欲しくなる
327デフォルトの名無しさん
2018/03/21(水) 22:37:05.71ID:D2465Z9C どんなメリットがあるので?
328はちみつ餃子 ◆8X2XSCHEME
2018/03/21(水) 22:39:19.66ID:MouF+uE4 ホントは最適化でだいぶん上手いことやってくれるんやけどな。
というか最適化でやるべきことだと思う。
細かいことまでいちいち配慮しなきゃならないのは最適化技術の敗北。
仕様に [[likely]] なんて入ったのは不格好な話だ。
というか最適化でやるべきことだと思う。
細かいことまでいちいち配慮しなきゃならないのは最適化技術の敗北。
仕様に [[likely]] なんて入ったのは不格好な話だ。
329デフォルトの名無しさん
2018/03/21(水) 23:03:06.41ID:TV3lE0eZ イテレータの++や―に戻り値があること自体設計ミス
ポインタのと類似性そこまで要らんし
イテレータで *it++ とか書きたくて仕方ない人もそんなに居ないだろ
void型でよかった
ポインタのと類似性そこまで要らんし
イテレータで *it++ とか書きたくて仕方ない人もそんなに居ないだろ
void型でよかった
330デフォルトの名無しさん
2018/03/21(水) 23:08:57.12ID:52xrh1Hk アセンブラの inc やdec 命令実行時のフラグ反映は不要?
高級アセンブラの名残じゃね?
高級アセンブラの名残じゃね?
331はちみつ餃子 ◆8X2XSCHEME
2018/03/21(水) 23:14:08.41ID:MouF+uE4 >>329
逆じゃないかなぁ。
ポインタをイテレータとしても使えるように一貫性を持たせたら結果的にそうなったって感じじゃないの。
どちらにしても、そこで無理に一貫性を持たせようとしてしまったことが良くなかったとは思うけど。
ちなみに operator++ の返却値を void にすることは出来ます。
逆じゃないかなぁ。
ポインタをイテレータとしても使えるように一貫性を持たせたら結果的にそうなったって感じじゃないの。
どちらにしても、そこで無理に一貫性を持たせようとしてしまったことが良くなかったとは思うけど。
ちなみに operator++ の返却値を void にすることは出来ます。
>>330
inc/dec でフラグが変化しないアーキがあった、というか、それが普通だと思っていたんだが
inc/dec でフラグが変化しないアーキがあった、というか、それが普通だと思っていたんだが
333デフォルトの名無しさん
2018/03/22(木) 00:58:21.46ID:dLiR/Xt3 なぜポストインクリメントがよく使われるかは、
PDP-11とかのアドレッシングモードにあるオートインクリメントが起源。
間接参照したあとにレジスタが増える。
オートデクリメントは逆にプレデクリメント。
あとinc,decでフラグが変化するのもPDP当時は当然の動作。
PDP-11とかのアドレッシングモードにあるオートインクリメントが起源。
間接参照したあとにレジスタが増える。
オートデクリメントは逆にプレデクリメント。
あとinc,decでフラグが変化するのもPDP当時は当然の動作。
334デフォルトの名無しさん
2018/03/22(木) 06:11:13.57ID:I/iO4/8S Linuxさあ、Ubuntuとか使ってるんだけど、俺はプログラムやネット以外にあまり
PCつかわないから、Ubuntuなんてプログラム環境は大体パッケージで手に入るし
スゲエ良いと思ってたんだけど、エロ動画配信サイトが今時は必ず専用の○○プレーヤーじゃないと
見れないんだな。たとえば、DMMプレーヤーとかそのサイトの専用の奴。なんでもDRMとかいう不正禁止のが
付いてて、普通のプレーヤーじゃ見れないのよ。スゲエ不便だからそれ専用にWindows10準備しちゃおうかな・・w
俺はプログラム言語でC++が一番すきです。
PCつかわないから、Ubuntuなんてプログラム環境は大体パッケージで手に入るし
スゲエ良いと思ってたんだけど、エロ動画配信サイトが今時は必ず専用の○○プレーヤーじゃないと
見れないんだな。たとえば、DMMプレーヤーとかそのサイトの専用の奴。なんでもDRMとかいう不正禁止のが
付いてて、普通のプレーヤーじゃ見れないのよ。スゲエ不便だからそれ専用にWindows10準備しちゃおうかな・・w
俺はプログラム言語でC++が一番すきです。
335デフォルトの名無しさん
2018/03/22(木) 07:05:57.55ID:C5Ula1AM またイミフなレスしてるのか
336デフォルトの名無しさん
2018/03/22(木) 07:15:53.52ID:tiDItZ1f C--があってもいいかもしれないな。
337デフォルトの名無しさん
2018/03/22(木) 09:44:57.12ID:Q2/ylW7b C♭思い出した
339デフォルトの名無しさん
2018/03/22(木) 17:42:41.78ID:Z5xjYgF/ unordered_setやunordered_mapは
reserve(size_type)はあるのにshrink_to_fit()がないのはなぜですか?
reserve(size_type)はあるのにshrink_to_fit()がないのはなぜですか?
340デフォルトの名無しさん
2018/03/22(木) 18:14:23.23ID:tiDItZ1f ハッシュだからじゃないの。
341デフォルトの名無しさん
2018/03/26(月) 20:46:12.70ID:qgnj+CJa void DumpCode(const char* str) {
for (int i = 0; str[i] != '\0'; ++i) {
printf("%02X ", (unsigned char)str[i]);
}
cout << endl;
}
↑の文字コードを16進数で表示する関数ですが、なぜ
printf("%02X ", str[i]);
ではなく、
printf("%02X ", (unsigned char)str[i]);
とキャストしているのでしょうか?
for (int i = 0; str[i] != '\0'; ++i) {
printf("%02X ", (unsigned char)str[i]);
}
cout << endl;
}
↑の文字コードを16進数で表示する関数ですが、なぜ
printf("%02X ", str[i]);
ではなく、
printf("%02X ", (unsigned char)str[i]);
とキャストしているのでしょうか?
342デフォルトの名無しさん
2018/03/26(月) 20:52:31.38ID:Sl5sXtlN 0x80以上の時符号拡張されてマイナスになるから
343デフォルトの名無しさん
2018/03/26(月) 20:55:55.86ID:qgnj+CJa char型の値は 0 から 127 までであると本に書いてあるのですが。。。
344デフォルトの名無しさん
2018/03/26(月) 20:58:30.32ID:Sl5sXtlN345デフォルトの名無しさん
2018/03/26(月) 21:01:09.95ID:qgnj+CJa346デフォルトの名無しさん
2018/03/26(月) 21:02:33.45ID:qgnj+CJa347片山博文MZ ◆T6xkBnTXz7B0
2018/03/26(月) 21:06:19.73ID:42MV7MT1348片山博文MZ ◆T6xkBnTXz7B0
2018/03/26(月) 21:10:11.27ID:42MV7MT1 signedな整数型は、最上位ビットが符号フラグになるんだ。charは8ビットの整数型で、printfに渡す過程で、符号付きのint型になる。まあ、やってみたらわかるけど、
printf("%c\n", (char)255);
printf("%c\n", (char)255);
349片山博文MZ ◆T6xkBnTXz7B0
2018/03/26(月) 21:11:26.75ID:42MV7MT1 printf("%d\n", (char)255);
%dね。
%dね。
350デフォルトの名無しさん
2018/03/26(月) 21:42:10.96ID:3IjTFjn0351片山博文MZ ◆T6xkBnTXz7B0
2018/03/26(月) 21:52:30.42ID:42MV7MT1 charのビット数、CHAR_BITが8ではない環境はほとんどない。
■ このスレッドは過去ログ倉庫に格納されています
