- 1 名前:デフォルトの名無しさん [2017/11/04(土) 16:33:35.07 ID:NYxCuvMY.net]
- エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう 半角空白やタブでのインデントはスレに貼ると無くなります コードを貼れる所 codepad.org/ https://ideone.com/ 前スレ 【初心者歓迎】C/C++室 Ver.101【環境依存OK】 https://mevius.5ch.net/test/read.cgi/tech/1500329247/
- 276 名前:デフォルトの名無しさん [2018/03/15(木) 23:07:46.82 ID:rOhYRyTV.net]
- できる人にとってはくだらないことなんだと思うのですが、
char* c; char *c; この2つは一緒なのですか?
- 277 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 23:12:48.58 ID:jcfpYhJu.net]
- char * c;
とか char * c ; も含めて一緒
- 278 名前: mailto:sage [2018/03/15(木) 23:13:16.42 ID:xYxZI4zx.net]
- >>270
一緒ですが個人的に後者を推奨します
- 279 名前:デフォルトの名無しさん [2018/03/15(木) 23:21:50.62 ID:rOhYRyTV.net]
- >>270
>>271 ありがとうございます どちらが正しいのか、機能が違うのか、よくわかっていなかったのがスッキリしました
- 280 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 23:24:52.27 ID:dUMa9unA.net]
- >>270
前者だと char* a, b; って書いたとaとbの型が変わっちゃうから常に後者方式で char *a, *b; みたく書くことをオススメする
- 281 名前:はちみつ餃子 mailto:sage [2018/03/15(木) 23:48:02.28 ID:VBbQqJBt.net]
- ワイはアスタリスクを型名の方に寄せて、複数の変数の宣言をまとめないスタイルを推しておるやぞ。
char* a; char* b; まあ人によって色々やね。
- 282 名前:デフォルトの名無しさん mailto:sage [2018/03/15(木) 23:48:51.41 ID:ipLBerzI.net]
- そんな迷うならtypedefしてしまえ
- 283 名前:はちみつ餃子 mailto:sage [2018/03/15(木) 23:52:42.60 ID:VBbQqJBt.net]
- C++ なら std::add_pointer を使うのも手やぞ。
普段から使うには綴りが長い気もするな。
- 284 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 00:04:03.30 ID:/SwLgzhl.net]
- ワイも後ろに寄せるスタイルの方が好きやな
別に自由ではあるけど、前に寄ってるとなんか違和感あるわ
- 285 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 00:12:21.27 ID:eqCACABM.net]
- この話始まるとスレが荒れるわけだが。
俺は char *a; int & ref; だ。
- 286 名前:はちみつ餃子 mailto:sage [2018/03/16(金) 00:27:41.31 ID:5DWUPgeG.net]
- C++ だとスッポスッポ先生が (というより D&E の文中にあるコードが) アスタリスクを型名にくっつけるスタイルで書いてあるから、
設計者的にはこれが推しなんやろなて思うたんや。
- 287 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 00:49:37.90 ID:7Nt6p3N1.net]
- そもそもCならまだわかるがC++になってもこの謎仕様が改善されてないのがおかしいわな
- 288 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 01:19:43.79 ID:pAByTZwR.net]
- char *a;派だがキャストは(char*)だな
- 289 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 06:18:52.71 ID:hczQTGC7.net]
- 両方に空白入れたり
両方詰めたらどうなるん
- 290 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 10:14:04.60 ID:x1iYgKqh.net]
- >>275
これ
- 291 名前:デフォルトの名無しさん [2018/03/16(金) 16:35:23.76 ID:3ma6aQHv.net]
- >>274
それな 前者は誰が流行らしたんだハゲか
- 292 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 18:15:24.73 ID:tA4eZSmU.net]
- ``int* p;''と``int *p;''はどちらが正しいですか
www.libjingu.jp/trans/bs_faq2-j.html#whitespace まあハゲの影響はあると思う
- 293 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 18:16:24.05 ID:YfjbsaKN.net]
- 偉い人が前で統一させてたから倣ってる
- 294 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 19:01:00.72 ID:EjV6B4+T.net]
- >>285
マイクロソフトじゃないか?
- 295 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 22:46:14.86 ID:KxYkqF9B.net]
- []演算子は変数の後ろしか置けないので迷いがない
- 296 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 22:50:13.34 ID:r/T+njCz.net]
- 変数との間に空白を入れるか入れないか選択の余地がある
- 297 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 23:05:45.65 ID:/SwLgzhl.net]
- 正直、選択の余地が無い方が嬉しい
- 298 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 23:17:53.08 ID:7Nt6p3N1.net]
- ある意味欠陥の1つ
- 299 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 23:24:49.74 ID:YbTBBkUF.net]
- >>289
リテラルの後ろにも置ける
- 300 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 23:28:34.45 ID:/SwLgzhl.net]
- あと数字の後ろにも置けるよな確か
x[2]は2[x]でも普通に動作するらしい、使ったことはないが
- 301 名前:デフォルトの名無しさん mailto:sage [2018/03/16(金) 23:32:56.43 ID:W1kNbC1+.net]
- 参照型&ってあまり使われないのか
- 302 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 02:01:02.93 ID:UGDcJiJh.net]
- >>293
宣言の中の型としての*の位置を問題にしてるのだから、式の中での*が使える位置については別の話でしょ。
- 303 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 17:02:13.24 ID:B2oEmArJ.net]
- インデントってタブ文字使うよりもスペース使った方がいいんですか?
- 304 名前:片山博文MZ mailto:sage [2018/03/17(土) 17:07:21.02 ID:6umCop+M.net]
- >>297
見た目とコンパイル速度のどちらを優先するかによる。
- 305 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 17:32:05.08 ID:Ak7laUjo.net]
- タブコードはエディタの設定に見た目が左右されるので使わない方がいい
- 306 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 17:39:18.45 ID:B2oEmArJ.net]
- うーん、やっぱりタブは使うべきではないんですね
- 307 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 17:41:47.51 ID:Ak7laUjo.net]
- 昔は1バイト当たり単価が高かったからね
- 308 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 20:01:33.65 ID:hl7Y0kGo.net]
- エディタの機能向上による要素が大きいな。
インデントやその削除にキーを何度も叩かなきゃならない状態だったらTABがまだ主流だったろう。
- 309 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 22:45:16.37 ID:NcDC59dQ.net]
- >>294
初めて知ったw
- 310 名前:はちみつ餃子 mailto:sage [2018/03/18(日) 04:35:20.62 ID:7ElIFee1.net]
- >>294
他にも変な仕組みは色々とあるけど、これはひとつとして使いどころが思いつかんよな。
- 311 名前:デフォルトの名無しさん mailto:sage [2018/03/18(日) 06:08:40.04 ID:QnqZv5w6.net]
- int a[10]; で a[5] でも 5[a] でも同じようにアクセスできるのは、
a[5] と *(a + 5) が同等で + 演算子の交換可能性から *(5 + a) も可、 それなら 5[a] も同じじゃなきゃ片手落ちだよね、って発想というか、 過去のコンパイラの実装とも関係がありそうな気がする。 もちろん、古いCコンパイラとのソース互換性が問題になるほど みんなが使ってた書き方とは思わないけど。
- 312 名前: mailto:sage [2018/03/18(日) 11:53:22.56 ID:ojW1vPJY.net]
- >>304
IOCCC …
- 313 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 16:56:43.36 ID:PiAC+2Zr.net]
- i++ と ++iって最適化すればほとんど変わらないか、あるいは++iの方がちょっと速いくらいですよね?
なんでi++の方がデファクトスタンダードみたいになってるんでしょう? ほぼ無視できる程度のメリットしかないとしても、++iと書くデメリットがないと思うのですが
- 314 名前:はちみつ餃子 mailto:sage [2018/03/20(火) 18:20:40.65 ID:N1yoGURK.net]
- >>307
インクリメントの対象が整数しかなかった C からの習慣がなんとなく引き継がれてるだけ。 後インクリメントは気持ち悪いと考える人は少なくはないし、 値を使わないなら前インクリメントにするのは C++ では良い習慣だよ。
- 315 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 20:17:17.59 ID:UFFOOrdu.net]
- ++C言語
- 316 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 20:18:05.88 ID:O958tZqO.net]
- >>308
なるほど、最初はちゃんと意味があったんですね 納得できました ありがとうございます
- 317 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 22:04:48.60 ID:+J5xJfYE.net]
- Cでインクリメントやデクリメントに後置が使われがちな理由は
a = *p++; みたいなポインタの使い方で手が慣れたせいもあるかと思う。 C++では性能的な理由で前置が好まれたのは指摘のとおり。 個人的には、どっちでも構わない場面ではCでは後置、C++では前置で書くかな。 特に単純なforで++iと打つと、途端にC++で書いてる気がしてくる。
- 318 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 22:08:04.94 ID:I2zEd3jr.net]
- 本当に性能に差が出たの?測ったの?
- 319 名前:デフォルトの名無しさん mailto:sage [2018/03/20(火) 23:46:13.85 ID:ZVuOcNlA.net]
- GCC 6.4.0 最適化なしで計測してみたけど、平均的な差は無いな
- 320 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 00:00:26.00 ID:2Gb2uvWn.net]
- 単純なforなら同じコード吐くんじゃね?
- 321 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 00:36:19.45 ID:OwhHF7Zm.net]
- 単純な整数型のインクリメントなら前置も後置もさが無いだろうけど、C++ではユーザー定義のクラスでインクリメントを実装できるから、
基本的には更新前のオブジェクトの状態の退避などの処理が必要な後置インクリメントよりコストの少ない前置インクリメントが好まれるのだと思うよ。
- 322 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 01:30:43.51 ID:MouF+uE4.net]
- 結果が使われないことが明らかな場合には後インクリメントのかわりに前インクリメントを呼び出すとかいったことをしても
ほとんどのコードは壊れないと思うんだけど、そういうルールを言語仕様に追加するのはもう出来ないかなぁ?
- 323 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 01:40:04.19 ID:CmybL5Dk.net]
- まぁ、出来るなら既にやってるでしょ
ぶっちゃけ、よっぽどシビアに速度を求める訳でないなら前置後置の差なんて気にする必要無いんじゃないかなぁ
- 324 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 19:45:28.97 ID:2N3cG+sW.net]
- そもそも速度を気にして
記述を変えるって 間違ってる気がする・・
- 325 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 19:50:40.96 ID:eUhtaSa6.net]
- 時代は変わったか
昔はそんな事は当たり前だった
- 326 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 19:51:54.96 ID:eUhtaSa6.net]
- 機能に対して糞重いソフトが多いのも
ソフトに対する価値観が変わったからか
- 327 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 19:55:34.20 ID:MouF+uE4.net]
- >>318
速度を気にするというのもあるけど、意味的にも無意味な処理をするってのがダサいだろ?
- 328 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 20:23:31.47 ID:NRxI71LE.net]
- >>321
お前のコードは無駄ばかり コンパイラも無駄命令を吐く そもそもCPUの動作自体が無駄ばかり そのプログラムを作るのも無駄だったり お前の存在は?
- 329 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 20:37:50.64 ID:L8aCdycT.net]
- 本スレでやれ
- 330 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 20:54:50.63 ID:b8e3mX8M.net]
- 手間が変わらず、かつデメリットもないのにその選択肢を取らない理由がなくない?
後置の方が保守性が高いとか可読性が高いならともかく、そうじゃないんだから天秤にかける必要さえない
- 331 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 20:59:28.52 ID:CmybL5Dk.net]
- >>321
それで見やすくなるなら別にいんじゃね
- 332 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 22:35:08.33 ID:TV3lE0eZ.net]
- 効率を言い出すと値を返さないインクリメント、デクリメントが標準で欲しくなる
- 333 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 22:37:05.71 ID:D2465Z9C.net]
- どんなメリットがあるので?
- 334 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 22:39:19.66 ID:MouF+uE4.net]
- ホントは最適化でだいぶん上手いことやってくれるんやけどな。
というか最適化でやるべきことだと思う。 細かいことまでいちいち配慮しなきゃならないのは最適化技術の敗北。 仕様に [[likely]] なんて入ったのは不格好な話だ。
- 335 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 23:03:06.41 ID:TV3lE0eZ.net]
- イテレータの++や―に戻り値があること自体設計ミス
ポインタのと類似性そこまで要らんし イテレータで *it++ とか書きたくて仕方ない人もそんなに居ないだろ void型でよかった
- 336 名前:デフォルトの名無しさん mailto:sage [2018/03/21(水) 23:08:57.12 ID:52xrh1Hk.net]
- アセンブラの inc やdec 命令実行時のフラグ反映は不要?
高級アセンブラの名残じゃね?
- 337 名前:はちみつ餃子 mailto:sage [2018/03/21(水) 23:14:08.41 ID:MouF+uE4.net]
- >>329
逆じゃないかなぁ。 ポインタをイテレータとしても使えるように一貫性を持たせたら結果的にそうなったって感じじゃないの。 どちらにしても、そこで無理に一貫性を持たせようとしてしまったことが良くなかったとは思うけど。 ちなみに operator++ の返却値を void にすることは出来ます。
- 338 名前: mailto:sage [2018/03/22(木) 00:37:09.57 ID:2FEQ/Wa3.net]
- >>330
inc/dec でフラグが変化しないアーキがあった、というか、それが普通だと思っていたんだが
- 339 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 00:58:21.46 ID:dLiR/Xt3.net]
- なぜポストインクリメントがよく使われるかは、
PDP-11とかのアドレッシングモードにあるオートインクリメントが起源。 間接参照したあとにレジスタが増える。 オートデクリメントは逆にプレデクリメント。 あとinc,decでフラグが変化するのもPDP当時は当然の動作。
- 340 名前:デフォルトの名無しさん [2018/03/22(木) 06:11:13.57 ID:I/iO4/8S.net]
- Linuxさあ、Ubuntuとか使ってるんだけど、俺はプログラムやネット以外にあまり
PCつかわないから、Ubuntuなんてプログラム環境は大体パッケージで手に入るし スゲエ良いと思ってたんだけど、エロ動画配信サイトが今時は必ず専用の○○プレーヤーじゃないと 見れないんだな。たとえば、DMMプレーヤーとかそのサイトの専用の奴。なんでもDRMとかいう不正禁止のが 付いてて、普通のプレーヤーじゃ見れないのよ。スゲエ不便だからそれ専用にWindows10準備しちゃおうかな・・w 俺はプログラム言語でC++が一番すきです。
- 341 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 07:05:57.55 ID:C5Ula1AM.net]
- またイミフなレスしてるのか
- 342 名前:デフォルトの名無しさん [2018/03/22(木) 07:15:53.52 ID:tiDItZ1f.net]
- C--があってもいいかもしれないな。
- 343 名前:デフォルトの名無しさん [2018/03/22(木) 09:44:57.12 ID:Q2/ylW7b.net]
- C♭思い出した
- 344 名前:はちみつ餃子 mailto:sage [2018/03/22(木) 10:24:04.20 ID:HExEyyqO.net]
- >>336
ググればすぐにわかることだけど、有るよ。
- 345 名前:デフォルトの名無しさん mailto:sage [2018/03/22(木) 17:42:41.78 ID:Z5xjYgF/.net]
- unordered_setやunordered_mapは
reserve(size_type)はあるのにshrink_to_fit()がないのはなぜですか?
- 346 名前:デフォルトの名無しさん [2018/03/22(木) 18:14:23.23 ID:tiDItZ1f.net]
- ハッシュだからじゃないの。
- 347 名前:デフォルトの名無しさん [2018/03/26(月) 20:46:12.70 ID:qgnj+CJa.net]
- 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]); とキャストしているのでしょうか?
- 348 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 20:52:31.38 ID:Sl5sXtlN.net]
- 0x80以上の時符号拡張されてマイナスになるから
- 349 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 20:55:55.86 ID:qgnj+CJa.net]
- char型の値は 0 から 127 までであると本に書いてあるのですが。。。
- 350 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 20:58:30.32 ID:Sl5sXtlN.net]
- >>343
その本は窓から投げ捨てろ。 ー128〜127が正解だ
- 351 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 21:01:09.95 ID:qgnj+CJa.net]
- >>344
本にはそうは書かれていませんでした。申し訳ありません。間違っていました。 アスキー文字コードは、0から127までの値しか取らないからOKかなと思ってしまったのですが。
- 352 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 21:02:33.45 ID:qgnj+CJa.net]
- >>344
何か不具合が起こる例を教えていただけると助かります。
- 353 名前:片山博文MZ mailto:sage [2018/03/26(月) 21:06:19.73 ID:42MV7MT1.net]
- >>346
char ch = 255; printf("%d\n", ch); C/C++では、オーバーフローは警告なく普通に起こる。
- 354 名前:片山博文MZ mailto:sage [2018/03/26(月) 21:10:11.27 ID:42MV7MT1.net]
- signedな整数型は、最上位ビットが符号フラグになるんだ。charは8ビットの整数型で、printfに渡す過程で、符号付きのint型になる。まあ、やってみたらわかるけど、
printf("%c\n", (char)255);
- 355 名前:片山博文MZ mailto:sage [2018/03/26(月) 21:11:26.75 ID:42MV7MT1.net]
- printf("%d\n", (char)255);
%dね。
- 356 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 21:42:10.96 ID:3IjTFjn0.net]
- >>344
>>348 そんな事は決まってない
- 357 名前:片山博文MZ mailto:sage [2018/03/26(月) 21:52:30.42 ID:42MV7MT1.net]
- charのビット数、CHAR_BITが8ではない環境はほとんど
- 358 名前:ネい。 []
- [ここ壊れてます]
- 359 名前:片山博文MZ mailto:sage [2018/03/26(月) 22:00:14.93 ID:42MV7MT1.net]
- 4ビットCPUで動作するトースターのコンピューターの話でもするつもりかね。
- 360 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 22:58:41.82 ID:3IjTFjn0.net]
- ほとんど無いから何?
「決まってない」の反論になってないよ 現行品でcharが16bitの環境があるんだけどね
- 361 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 23:00:24.31 ID:3IjTFjn0.net]
- charが符号付きとも決まってない
ちょうど今符号無しの環境を使ってるよ
- 362 名前:片山博文MZ mailto:sage [2018/03/26(月) 23:02:53.12 ID:8aZ5PUAj.net]
- インテル入ってない
- 363 名前:デフォルトの名無しさん [2018/03/26(月) 23:03:06.95 .net]
- 俺のcharは100bitあるぜ!!
- 364 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 23:04:42.66 ID:3IjTFjn0.net]
- とりあえず>>1を読んどけ
- 365 名前:デフォルトの名無しさん mailto:sage [2018/03/26(月) 23:55:34.36 ID:2w8Ha0HC.net]
- char と signed char を混同するクソコテ
- 366 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 01:28:23.66 ID:bCiMyjcv.net]
- 今後char関連の質問をするときは、charのビット数や符号などの環境を明示しましょうということで。
初心者お断り感あるけど、重箱の隅を全力でほじくり返す人がいるからしょうがないね。
- 367 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 01:33:34.51 ID:GW1/xmrB.net]
- unsigned char がデフォなんてMS-C 3.x or 4.xの /J オプション付き
以外に遭遇した事無いけどな
- 368 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 02:55:06.24 ID:oddUVIdN.net]
- >>359
>>341の質問に対してcharの符号有無が環境によって異なるというのは本質的な回答であり、ビット数の話は不適切だったというだけで、重箱の隅がどうこうという話では無いだろう。 そもそも初心者歓迎のスレで初心者を除外する要件を設けるのは本末転倒では?
- 369 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 07:09:18.07 ID:vavxlF2f.net]
- ???
環境を明示しろって言うのは>>1にも書いてあるんだが...
- 370 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 07:42:58.98 ID:7BdcIkqa.net]
- >>361
初心者だろうと質問に付随する前提知識は必要 変数知らんデータ型知らん制御文も分からないじゃ説明しようがない事なんていくらでもある まずそこら辺の知識を理解してもらわん事には説明できないですってのは初心者を除外とは言わんだろう
- 371 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 07:52:49.58 ID:ofLFYE4b.net]
- 回答者もわかってないからな
>>352とか
- 372 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 08:13:51.03 ID:ofLFYE4b.net]
- 4ビットCPUだとcharは4ビットと思ってんのか?
- 373 名前:デフォルトの名無しさん [2018/03/27(火) 08:39:25.07 ID:tnecWY6M.net]
- >>341 >>346
不都合と言う程の不都合か分からないけど、 単なる char が signed char のコンパイラで、例えば str[i] == -1 の時、 printf("%02X ", (unsigned char)str[i]); なら表示は "FF " printf("%02X ", str[i]); だと表示は "FFFFFFFF " (intが32bitの環境) てな具合に表示結果が指定桁数とずれて見苦しい、という現象が起きる。 ただし void DumpCode(const char* str) でASCII文字列しか扱わないなら、 意図せずASCII以外(漢字など)を含んだ文字列を引数に与えたときに 「見苦しい表示結果」のおかげで関数の使い方の間違いに気付きやすい。 よって (unsigined char) のキャストをしない方が好ましい、て考え方もある。 >>360 ARM で GCC だと、単なる char は unsigined が普通みたい。 元のCPU設計で符号付8bitが拡張機能だったことと関係あるとかないとか。
- 374 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 08:41:45.88 ID:7BdcIkqa.net]
- 4bitのcharか、アルファベットが表現できないな
まぁ、341の例だと渡されるポインタ配列が文字コードの範囲内ならキャストは要らんね なんかの理由で文字コード外の数値が入ってきた時に文字揃えがズレる事を嫌って一応キャストしたって感じだとは思うけど
- 375 名前:デフォルトの名無しさん [2018/03/27(火) 09:55:59.95 ID:dDmfqIPV.net]
- int *p = new int[100];
delete[] p; delete[] p で int 100個分の領域を解放するのだと思いますが、 どうやって、 p が int 100個分の領域を指していると分かるのでしょうか? p は単なる int 型へのポインタです。
- 376 名前:デフォルトの名無しさん mailto:sage [2018/03/27(火) 10:02:58.95 ID:GW1/xmrB.net]
- >>366
つ -fsigned-char/-funsigned-char
|

|