C言語なら俺に聞け 163at TECH
C言語なら俺に聞け 163 - 暇つぶし2ch413:デフォルトの名無しさん (ワッチョイ ff76-J7R8)
24/11/30 18:37:21.74 k7UOR52k0.net
これだけ見て分かるわけ無いよ
max = 1 << bmpCoreHeader.bcBitCount;
for (iCountの初期値が無いよ、普通0からだよね; iCount < max; iCount++) {
  // テーブルRGB値をブラシの色に設定?
  brush = CreateSolidBrush(...);
  // RGBで色指定したブラシで塗る?hdcが変わらんようだが何回も呼ぶ意味があるの?
  SelectObject(hdc, brush);
  // これ以降があるのか…
}

414:デフォルトの名無しさん
24/11/30 18:53:59.75 k7UOR52k0.net
bmpCoreHeader.bcBitCount の範囲チェックが必要そう
uint64_t max;
max = 1 << 64; // max == 0x8000000000000000 で意味がありそう
max = 1 << 65; // これ64bit整数の範囲超えているよね、プロセッサ依存の値になる予感

415:デフォルトの名無しさん
24/11/30 19:19:34.08 k7UOR52k0.net
64bitシフトでも溢れた
これ難しいね
uint64_t seed, max
seed = 1;
max = seed << 63; // 0x80000000 で期待どおり
max = 1ull << 63; // 0x80000000 これも期待どおり
max = 1 << 63; // 即値1のレジスタ範囲が足りない?
max = 1 << 63; // 即値1だと32bitなのか

416:デフォルトの名無しさん
24/11/30 19:23:29.64 ePDG6JlId.net
カラーパレットを使うのは1,4,8って決まってるんだが

417:青木康善
24/11/30 19:52:07.91 exhSsXMya.net
トリプルポインタが理解不能です。

418:デフォルトの名無しさん
24/11/30 20:06:07.06 k7UOR52k0.net
1, 4, 8以外のエラー処理が無ければ手抜きプログラムだよ

419:デフォルトの名無しさん
24/11/30 21:42:40.50 54hbVEvk0.net
これが俗に言う無能な働き者かぁ…

420:デフォルトの名無しさん
24/11/30 22:31:58.70 cI+uLRSv0.net
粘着キショい

421:デフォルトの名無しさん (ササクッテロロ Sp10-8wrk)
24/12/01 11:20:07.96 HNZEO20Lp.net
>>407
理解してる俺でもデバッグん時に面倒だから使わない

422:デフォルトの名無しさん (ワッチョイ 9663-WFUB)
24/12/01 11:21:42.42 +XByeWPN0.net
理解するな、感じるんだ!

423:デフォルトの名無しさん
24/12/02 07:39:26


424:.68 ID:UIzNnBqa0.net



425:デフォルトの名無しさん (ササクッテロロ Sp10-8wrk)
24/12/02 10:00:18.95 cKcAe5N2p.net
なんだその数字w

426:はちみつ餃子
24/12/02 12:52:17.82 5A4jg9rQ0.net
>>413
なんていうアプリで書いてるんだろ?

427:デフォルトの名無しさん
24/12/02 16:27:58.74 sZTu4RGZ0.net
>>415
アマゾンにあった
「 モバイル C { C/C++ コンパイラ } 」だって
¥1,546
/dp/B00MFXHPBW

428:デフォルトの名無しさん
24/12/02 16:44:39.99 mvW+hvRB0.net
無料版もあるみたいだ。違いは分からなかった。

/dp/B01CEZQGX8

429:デフォルトの名無しさん
24/12/04 22:39:06.18 QlqtMMMjH.net BE:629052145-2BP(1000)
URLリンク(img.5ch.net)
なんかEchoAPI、さまざまなAPIシナリオをモックするのに役立って、フロントエンドの作業を独立して行えるようになるよ

430:デフォルトの名無しさん
24/12/05 08:13:19.15 XxVPE2wx0.net
前はAIDEってのもあったような
自分も購入済みだったけどストアから消えた

431:デフォルトの名無しさん
24/12/05 08:18:47.93 GShkk8fF0.net
>>418ならただの宣伝マルチポストなのでさっさとNGしておくように

432:デフォルトの名無しさん
24/12/08 09:05:36.00 NBQmwlWPa.net
char text[32] = "count="
sptintf(text, "%s%d", text, 100);


↑これって問題ない? 

433:デフォルトの名無しさん
24/12/08 09:31:43.48 ukMyBbJC0.net
オーバーフローを懸念。

434:デフォルトの名無しさん
24/12/08 12:39:42.22 xllqP0wk0.net
snprintf

435:はちみつ餃子
24/12/08 13:05:39.35 6js3fqHP0.net
>>421
sprintf のことだよね?
問題はある。
領域が重なるオブジェクト間でコピーが行われるときの動作は未定義とするという仕様になってる。

それと関数シグネチャを見ればわかるが引数のところに restrict ってついてるでしょ。
その性質上、他の引数がこれと領域が被ってはいけないというサインだ。
まあ引数を使わない関数であれば restrict 修飾されたポインタが指す領域がかぶってもただちに違反ではないが、常識的には渡す以上は使われるものと想定すべきだよね。

436:デフォルトの名無しさん (ワッチョイ e7fa-jsat)
24/12/08 16:35:15.95 iOnFgjmu0.net
>>421
問題ありだ。1行目末尾にセミコロンがないじゃないか
あと、学校の宿題の答えをこんなところで聞いちゃいかんぞ

437:デフォルトの名無しさん
24/12/08 20:16:31.35 rVbvHhAN0.net
最近の小学校ではこんな宿題出るのか
末恐ろしいと言うか、頼もしいというか

438:デフォルトの名無しさん
24/12/09 01:07:25.53 ToKnc/9y0.net
コンピュータの授業とか普通にあるんだろ?今って
俺からすると羨ましい限りだわ
でもダンスの授業はいらん

439:デフォルトの名無しさん
24/12/09 01:41:05.76 izrgU9L90.net
元々芸術科目や体育は面倒な存在だし
ダンスはそれらが合わさって一見最強に見えるだけで専門科目に比べれば実は大した内容じゃない
子供は加減の付け方を知らないから物凄い壁に見えるんだろう

440:はちみつ餃子
24/12/09 01:48:04.91 hHB0rnnr0.net
1990 年代頃なら中学校でコンピュータの授業はあったがプログラミングがちょっとでも出来るようになるほどではなく使い方に慣れるという程度だったと思う。
ただ、学校に設備や資料はあったから興味があ�


441:黷ヘ詳しくなれるチャンスはあった。 設備をどのくらい解放するかは学校の体制によるだろうけど。



442:デフォルトの名無しさん
24/12/09 10:00:06.94 hbK9EAUD0.net
>>427
踊りながら英語でコンピュータを使え

443:デフォルトの名無しさん (ワッチョイ dff4-tB0+)
24/12/09 13:23:27.80 wWCmXoxS0.net
科学 + 5ch

【AI】AIはわずか2時間の対話で人間の性格をコピーできる [すらいむ★]
スレリンク(scienceplus板)

コメントに面白いことが書かれている

444:デフォルトの名無しさん
24/12/09 13:52:01.90 IOR7vjsa0.net
2時間で初等教育から大学院レベルまで学習完了したら
人間要らなくなりそうだな

445:デフォルトの名無しさん
24/12/09 18:02:12.33 rC3URswf0.net
>>429
たしか教師がクソすぎて失敗したんだよなw

446:デフォルトの名無しさん
24/12/09 19:36:33.91 hbK9EAUD0.net
やがて全ての仕事がAIに直結されたロボットによって置き換えられ、人類絶滅。
地球はAIのみが存在する世界になり、真空でもそのまま動くロボットが宇宙征服。

447:デフォルトの名無しさん
24/12/09 21:34:01.67 OpvCpgOo0.net
チェックボックスとかラジオボタンの状態を保存したいんだけどなんて調べればええんすの?
現状ウィンドウを破棄する前にコントロールの内容を取得して状態に合わせた変数を初期化ファイルに保存、再起動時に変数に対応した状態に再設定するみたいなのしか思いつかん
冗長になって見づらいだろうし代替案を知りたい

448:デフォルトの名無しさん
24/12/09 21:38:21.41 IOR7vjsa0.net
その通りで良いと思います

449:デフォルトの名無しさん
24/12/09 21:39:24.19 XfZ/p96kH.net BE:629052145-2BP(1000)
URLリンク(img.5ch.net)
www最近、EchoAPIを使い始めたところ、効率的なAPIテストツールを提供してくれるおかげで、開発プロセスが向上した!

450:デフォルトの名無しさん
24/12/10 09:40:44.51 9vz9QL6n0.net
>>436
これで行くしかないのか

451:デフォルトの名無しさん (ワッチョイ e707-f5HH)
24/12/10 10:01:08.05 gzrtf0Gl0.net
対応表をだーっと並べる、control_state_read_and_write(bool is_write, ...) みたいな関数を置く、など
割り切ってしまえば工夫のしがいはある

ただ、そのときはよくても、あとになってみたら黒魔術でしかなかったりする
愚直なのもいいぞ

452:デフォルトの名無しさん
24/12/10 17:10:24.87 TsXGEoU20.net
>>435
何がどう"冗長になって見づらい"のか?

453:デフォルトの名無しさん
24/12/10 19:03:49.02 ruXLR+AW0.net
属人化だとか 尻アナルライブだとかあったような

454:デフォルトの名無しさん
24/12/10 19:06:39.85 RLBTgK1d0.net
身体に刻む学習方法

455:デフォルトの名無しさん
24/12/10 21:11:22.07 RajTC0DHa.net
>>422-424
ありがとん

456:デフォルトの名無しさん
24/12/10 21:43:52.59 RajTC0DHa.net
これでなんか機能した

TCHAR buf[255];
this->GetWindowText(title, 255);

int len = _tcsclen(buf);
_sntprintf(buf + len, 255, " %d", uiWindowCount);

this->SetWindowText(buf);

457:デフォルトの名無しさん
24/12/10 21:51:03.48 ruXLR+AW0.net
this->
ナニコレ
もしかしてC言語スレでC++使えるぞあぴーるですか!
すげー

458:はちみつ餃子
24/12/10 22:13:12.06 ujXLUuNp0.net
>>443-444
もし C++ の話なら上述 (>>424) の restrict の説明が役に立たない。
C++ に restrict は無いから。

459:デフォルトの名無しさん
24/12/11 07:46:28.90 P/b6xwK7a.net
API自体はC言語なんでそこらへんはスルーでお願い

460:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 4732-B9Rp)
24/12/11 14:36:37.44 fIut9/tx0.net
>>447
C の snprintf と C++ の snprintf は違うという話をしてるんやが
(最終的に同じものが呼び出される実装の場合はあるにしても。)

461:デフォルトの名無しさん
24/12/11 20:35:15.94 GrIf7glWH.net BE:629052145-2BP(1000)
URLリンク(img.5ch.net)
最近のRESTful APIについての議論に触発されてEchoAPIを試してみたところ、エンドポイントのシミュレーションツールがテストプロセスを非常に効率化してくれました。

462:デフォルトの名無しさん
24/12/11 23:04:37.50 xKzgcnaC0.net
MSは採用していないのかな?
なんでこんなにバグが多いんだろう

463:デフォルトの名無しさん
24/12/15 15:13:40.89 jrfqO5QN0.net
1つめのプロシージャで宣言した変数を2つ目のプロシージャで使うって頑張れば可能?
それともグローバル変数宣言したほうがいい?

464:デフォルトの名無しさん
24/12/15 15:17:17.63 Vq+PRAKz0.net
引数で渡せばいいんじゃね

465:デフォルトの名無しさん
24/12/15 15:23:28.37 jrfqO5QN0.net
>>452
それも考えたんだけど、プロシージャ作るときライブラリ側が指定した引数以外渡せないんじゃない?

466:デフォルトの名無しさん
24/12/15 15:31:40.27 wmU+aa0b0.net
そのプロシージャーを同一モジュール内lに記述して、
変数をスタティック宣言する、とか

467:デフォルトの名無しさん
24/12/15 15:38:22.49 jrfqO5QN0.net
>>454
そんなことできるんかよ知らなかった
{}内かつ、他のswitchと干渉しないところにベタ書きすればいいってことよね?

468:デフォルトの名無しさん
24/12/15 15:45:22.53 wmU+aa0b0.net
ちょっと違う様な気がする
そのファイル内にある全ての関数から参照出来る宣言です
スタティック宣言を調べて見て

469:デフォルトの名無しさん
24/12/15 15:46:49.05 jrfqO5QN0.net
>>456
ごめん、スタティックはわかってる
モジュール内への記述の方
言葉足らずですまん

470:デフォルトの名無しさん
24/12/15 16:32:34.62 jrfqO5QN0.net
調べてみたけど関数内に別の関数の処理はかけないっぽい?
とりあえず自前のソース書き換えてみたけどC2275が出てしまう

471:デフォルトの名無しさん
24/12/15 16:54:06.72 Wjdp3H7kM.net
モジュールとかプロシージャはc言語の用語ではないよ
誤解を生むからなるべく正しい用語で
あるいはソース書け

472:デフォルトの名無しさん
24/12/15 17:04:08.92 5Q71kCB70.net
Cで作ったソフトにアイコンをつける方法ありますか?
コンパイラはmingw

473:はちみつ餃子
24/12/15 17:07:42.25 SAQ/jMe00.net
>>460
リソーススクリプトを書いて windres コマンドでコンパイルしてリンク。

474:デフォルトの名無しさん
24/12/15 17:11:49.15 jrfqO5QN0.net
>>459
ウィンドウプロシージャでおk?

475:はちみつ餃子
24/12/15 17:25:02.46 SAQ/jMe00.net
>>462
windows の話?
ウィンドウプロシージャにデータを結びつけたいのなら必要なのは SetProp じゃないかな。

476:デフォルトの名無しさん
24/12/15 20:08:51.95 7bvd8wX+0.net
>>458
よくある質問に書いてあんだからそれを読めよ

477:デフォルトの名無しさん (ワッチョイ 4aa2-SaU4)
24/12/15 21:32:26.28 8K4C8OcF0.net
2つ目のプロシージャってなんやねん

478:デフォルトの名無しさん
24/12/16 07:18:55.27 Y4GCxOlhr.net
今北
何のデータかわからんが、だれに属しているデータなのやら

「全然関係ないところ」には、置かないほうがいいぞ少なくとも

479:デフォルトの名無しさん
24/12/16 18:03:11.25 o/MtQx1A0.net
下記のコードのsizeof(buf)/sizeof(TCHAR)ってなんの意味があるの?
ただのsizeof(buf)じゃだめ?

static int num;
TCHAR buf[8];
stprintf_s(buf,sizeof(buf)/sizeof(TCHAR), TEXT("%d"), num);

480:デフォルトの名無しさん
24/12/16 18:17:40.10 o/MtQx1A0.net
>>463
なるほどね、それで行けるかありがとう

481:デフォルトの名無しさん
24/12/16 18:18:31.53 o/MtQx1A0.net
>>466
自分の知識だと外に置くくらいしか思いつかん


482:かった



483:デフォルトの名無しさん
24/12/16 18:20:09.41 /03Ox5VG0.net
TCHARは_UNICODEのマクロの定義の有無によって16bitまたは8bitになる

484:はちみつ餃子
24/12/16 18:26:34.86 26oXJeTE0.net
>>467
> ただのsizeof(buf)じゃだめ?

だめ。

TCHAR はコンパイル時に ANSI モードか Unicode モードかで定義が切り替わる。
ANSI モードのときは char で Unicode モードのときは WCHAR と同じ。

_stprintf_s も ANSI モードのときは sprintf_s に置き換えられて Unicode モードのときは swprintf_s になる。
swprintf_s のときの第一引数は文字数 (この場合は UTF-16 でのコードポイントの数) なのでバイト数である sizeof(buf) を渡しても駄目。

ANSI モードでしかコンパイルしないのであれば別に割らなくても大丈夫だけど、それならそもそも切り替えを前提としたマクロを使う必要ないしな……。

485:デフォルトの名無しさん
24/12/16 22:06:23.18 o/MtQx1A0.net
Unicodeになるとなんで割る必要が出てくるのかいまいち掴めないなあ
BuffのサイズをTCHARのサイズで割ってどうしてサイズが出せるの?

486:デフォルトの名無しさん
24/12/16 22:41:01.10 /03Ox5VG0.net
>>472
ごちゃごちゃ考えてないで
とっととデバッガ使って値を確認しな

487:はちみつ餃子
24/12/16 22:48:31.98 26oXJeTE0.net
配列の大きさを得るために配列のバイト数を配列要素のバイト数で割るのはごく一般的なイディオムなので何がわからないのかわからない。

488:デフォルトの名無しさん
24/12/16 22:57:30.45 Q04ymynwH.net BE:629052145-2BP(1000)
URLリンク(img.5ch.net)
これらのアイデアを実装するために取り組んでいる中で、EchoAPIが設計ワークフローを本当に効率化してくれた

489:デフォルトの名無しさん
24/12/17 00:02:56.65 KLd2kDAJ0.net
>>472
Unicodeの場合、2バイトで1文字を表現
①①②②③③④④⑤⑤⑥⑥⑦⑦⑧⑧⑨⑨ で9文字、18バイト

ANSIの場合、
①②③④⑤⑥⑦⑧⑨ で9文字、9バイト

> sizeof(buf)/sizeof(TCHAR)

sizeof(buf)が指すのはバイト数、Unicodeなら18、ANSIなら9
sizeof(TCHAR)が指すのは1文字のバイト数、Unicodeなら2、ANSIなら1

そして stprintf_s の引数 sizeOfBufferはバイト数ではなく「格納する最大文字数」であること

引数がバイト数ならsizeof(buf)でいいけど、引数が文字数を求めているならsizeof(buf)ではおかしくなる
上の例で言えば、Unicodeは18バイト9文字で本来は9とするところを18と指定してしまうことになる
すると関数側はバッファが18文字分(バイトで32バイト)あると勘違いするわけでバッファオーバーフローを起こす

sizeof(buf)/sizeof(TCHAR) は18バイトの領域があって、それを1文字のバイト数で割って「9文字」ということ

490:デフォルトの名無しさん
24/12/17 00:05:50.03 KLd2kDAJ0.net
丸付き数字自体が1文字1バイトって意味じゃないからな
内部表現を表すために使用しただけで数字がx文字目として見て

491:デフォルトの名無しさん
24/12/17 10:25:09.48 hEkGaD6xa.net
_countof()

492:デフォルトの名無しさん
24/12/17 12:09:40.76 2fZmW/080.net
いやvc++使ってんならstd::sizeでいい

493:デフォルトの名無しさん
24/12/17 12:36:10.86 5c2Y3gwMp.net
C言語スレだろw

494:デフォルトの名無しさん
24/12/17 12:49:19.32 6SQ8uEd20.net
そこは禁欲しましょう

495:デフォルトの名無しさん
24/12/18 01:25:30.31 ILkVh3nA0.net
>>476
朝わかりやすいね
でもANSIって1バイトと2バイト混合できるよね?どうなっちゃうんだろう

496:デフォルトの名無しさん
24/12/18 02:49:26.43 NqM0X43U0.net
>>482
ANSIはバイト=文字数
そもそも論理的な文字数じゃなくて処理単位での文字数ね
だから strlen("あいう") = 6
strlen("123あ67い0") = 10 // 数字は半角(1バイト)、ひらがなは全角(2バイト)

Unicodeの場合でも正しい文字数になるわけじゃない、サロゲートペアの場合に文字数は2(4バイト)になる

497:はちみつ餃子
24/12/18 09:23:44.77 w442kBzm0.net
Unicode だとサロゲートペアを脇においても異体字だの合成だのといったものがあるし、人間が紙の上に書くときの直感的な感覚で言うところの「文字数」とは定義が違うので、各文字コードの仕組みを知っておくしか仕方がない。

498:デフォルトの名無しさん
24/12/18 17:31:07.70 ILkVh3nA0.net
>>483
>>484
つまりこの方法だとコンパイル時に気をつけるしか無いってことか、大変だね
テキストエディタみたいなの作ろうとすると禿げ上がりそう

499:デフォルトの名無しさん
24/12/18 17:41:39.49 NuF84nX60.net
文字コード問題よりC言語で作れってほうがハゲりそうだ

500:デフォルトの名無しさん
24/12/18 17:56:26.27 2i1n2GHXM.net
固定長ならそこまで禿げないかと

501:デフォルトの名無しさん
24/12/18 18:24:42.01 ccS3E3GJ0.net
>>485
方法が大変?
お前まだ理解できてないぞ
一般論として文字コードの扱いは大変だがTCHARの仕組みは単純だ

502:デフォルトの名無しさん
24/12/18 18:25:51.62 U+/f/ac80.net
CがC++だったとしても変わらんでしょ
VSCodeはレンダリングの都合でWebルレームワークとjavascriptで作られてるからC/C++製エディタと比較して遅いというデメリットがある

503:デフォルトの名無しさん
24/12/18 18:34:50.50 ccS3E3GJ0.net
c言語で文字列処理はクソ面倒でしょ
ライブラリの整備からやる必要がある上にコードがとっ散らかる

504:デフォルトの名無しさん
24/12/18 18:36:51.22 U+/f/ac80.net
Windowsの場合使用フォントに応じて描画幅を返すAPIに丸投げできるから大した手間にならないが
メモ帳の「右端で折り返す」相当を実装する場合右端のどこで切るかでその人センスが露になる

505:デフォルトの名無しさん
24/12/18 18:41:35.77 U+/f/ac80.net
>>480
何か誤解があるみたいだが開発言語にCを選ぶようなやつがそんなのを面倒に感じる事はないんだよ

506:はちみつ餃子
24/12/18 22:35:54.78 w442kBzm0.net
アプリケーションを作るにあたって TCHAR が必要になる状況はそれほどない。
Unicode 対応をきちんとやるならそれとは別に ANSI 版も作るという必要性はないし、両方を作る必要性がないなら切り替えを意識する必要もないから。
最初から WCHAR で書けばよい。

ライブラリとしてまとめるならどちらにも対応したほうが良いこともあるかもしれんけど。

507:デフォルトの名無しさん
24/12/18 23:14:04.02 1nhczz8f0.net
テキストエディタ、アセンブラで作った奴いるだろう
ハゲてはいなかったと思う

508:デフォルトの名無しさん
24/12/19 15:05:41.21 p9TYuGiMa.net
>>483
strlen("123あ67い0") == 12 // utf-8

509:デフォルトの名無しさん
24/12/19 15:35:21.01 boHB/shj0.net
strcat()、実装大変そうだな

510:デフォルトの名無しさん
24/12/19 18:03:52.50 KNZC4rFA0.net
UTF-8のバイト数ではなく文字列の長さを調べるソース
URLリンク(drive.google.com)

511:デフォルトの名無しさん
24/12/19 18:29:36.25 ByBpVqn8M.net
>>497
Unicodeで文字列の長さって何?
書記素クラスタか?

って突っ込まれるから知ったかぶらないほうがいいぞ

512:デフォルトの名無しさん
24/12/19 18:32:55.82 KNZC4rFA0.net
>>498
文字数を数えられるように自分で書いたのだけど?
文字数数えられるけど知ったかとは?

513:デフォルトの名無しさん
24/12/19 18:34:44.41 hCGKCs/t0.net
👩🏽‍👩🏿‍👧🏻‍👧🏽

514:デフォルトの名無しさん
24/12/19 18:41:15.54 ByBpVqn8M.net
>>499
それがまさに知ったか
unicodeの基礎すらわかってない
そんなやつのライブラリなんで誰が使うんだよ

515:デフォルトの名無しさん
24/12/19 18:45:26.23 KNZC4rFA0.net
>>501
基礎ってなに?
ただ文字数数えれるプログラムとしてだしたのに

516:デフォルトの名無しさん
24/12/19 18:50


517::39.22 ID:ByBpVqn8M.net



518:デフォルトの名無しさん
24/12/19 18:52:55.31 KNZC4rFA0.net
>>503
なんで書記素クラスタって言葉にこだわってるの?
もしかして教科通りにU+数字じゃないから言ってるだけ?

519:デフォルトの名無しさん
24/12/19 19:11:26.12 hCGKCs/t0.net
﷽は1文字か?

520:デフォルトの名無しさん
24/12/19 19:27:41.47 KNZC4rFA0.net
>>505
1文字 3バイトみたいだね
ソースを変えて出力してみた

521:デフォルトの名無しさん
24/12/19 19:38:58.12 hCGKCs/t0.net
そうなんだ
よかったね

URLリンク(www.unicode.org)

522:デフォルトの名無しさん
24/12/19 19:46:58.36 zv08w2oi0.net
main関数用のヘッダファイル用意してて草

523:デフォルトの名無しさん
24/12/19 19:59:42.44 iU+Lg9qY0.net
unicode怖ひ

524:デフォルトの名無しさん
24/12/19 20:00:17.69 y/hB6qNpr.net
退勤前に>>497見て、
ああ、"フロッピーディスク"って入れたら8が返り、"ハードディスク"って入れたら2.5が返るような関数だろ。
って思いつつ帰宅したら、またお前らときたら

525:はちみつ餃子
24/12/19 22:28:22.60 uLfYubV70.net
>>509
自然言語がぶっ壊れてるんだよ。
Unicode は自然言語のぶっ壊れをどうにかこうにかコンピュータで扱える形にしただけ。

526:デフォルトの名無しさん
24/12/20 15:28:36.64 raronLtC0.net
JAIST、「並行量子通信プロトコル」の完全な自動形式検証を実現
URLリンク(news.mynavi.jp)

527:デフォルトの名無しさん
24/12/20 23:42:16.35 yXvtHThaH.net BE:629052145-2BP(1000)
URLリンク(img.5ch.net)
最近のRESTful APIについての議論に触発されてEchoAPIを試してみたところ、エンドポイントのシミュレーションツールがテストプロセスを非常に効率化してくれた

528:デフォルトの名無しさん
24/12/21 07:13:36.08 37tGDg2N0.net
IsWindowVisible
IsWindowEnabled
EnableWindow
のダイアログ版教えてくりゃ

529:デフォルトの名無しさん
24/12/21 10:49:43.14 bIHzWCsda.net
GetWindowHandle

530:デフォルトの名無しさん
24/12/21 21:59:52.73 37tGDg2N0.net
>>515
つまりどういうことだってばよ

531:デフォルトの名無しさん
24/12/21 22:49:23.50 Bjr5M2i00.net
>>516
Win32の板できけ

532:デフォルトの名無しさん (ワッチョイ eb53-XATa)
24/12/22 02:23:50.05 SmvDArN50.net
>>517
なるほど

533:デフォルトの名無しさん
24/12/29 08:16:36.48 5Nra/jss0.net
%*d
こんなの初めて知った
B1.3 Formatted Inputに載ってたけど読んでなかった

534:
24/12/29 10:03:55.05 RHfwjsVRa.net
(s)scanfのフォーマット引数もパターンマッチのように使えて便利だったり

535:デフォルトの名無しさん
24/12/30 16:23:40.30 QwWcwTek0.net
>>519
俺はそれ20年以上前に知ったような気がする。
フォーマットの文字列をわざわざ別に作らなくて済んで素晴らしいと思った記憶がある。

536:デフォルトの名無しさん
24/12/31 13:18:32.28 dvbSbmj1a.net
実は正規表現が使えるんだぜ

537:デフォルトの名無しさん
24/12/31 13:46:40.77 KJy4fxay0.net
ネイピア数や円周率を誤差ナシで扱えると嬉しい

538:デフォルトの名無しさん
25/01/02 15:48:37.33 8mwDch1n0.net
円周率って math.h とかに入っているの?
それとも
pi = 4.0 * atan(1.0);
とかで持ってくるものなの?

539:はちみつ餃子
25/01/02 19:46:55.76 dC27qXct0.net
>>524
言語仕様にはないが、処理系によっては有ることもある。
特定の環境でコンパイル・実行できればよいならそれを使えばいいし、そうでないなら工夫も必用だろうし……
どのくらい移植性に配慮するかによるんじゃないの。

540:はちみつ餃子
25/01/02 19:58:10.79


541: ID:dC27qXct0.net



542:デフォルトの名無しさん
25/01/02 22:08:15.15 8mwDch1n0.net
ちょっと解析的な計算というのが正確にわかっていない

数値的な計算というのは有限差分法とか用いて近似的な解を求める方法だよね?

解析的な計算というのは a *x^2 + b * x + c = 0 なら手計算で解けるよというやり方?
使ったこと無いけどマスマティカとかそういうソフトだっけ?

543:はちみつ餃子
25/01/02 23:00:55.85 dC27qXct0.net
>>527
そう。 要は数式の変形で解くやりかたってこと。
どのくらいのものを扱いたいかによるけど四則演算と巾乗くらいからなる簡単な式を扱えればよいなら C で書いてもそれほど高度というほどではない。
リスト構造を作って切り貼りするってだけなので。
とはいえ、計算を始めたいときにやる下準備としてはかなり面倒臭いだろうとは思うけど。

544:デフォルトの名無しさん
25/01/03 13:18:29.38 4R6C6cdS0.net
なるほどね、解を公式化しておいて虚数が必要か判定する感じだろうね

545:デフォルトの名無しさん (アウアウエー Sa23-Y8TR)
25/01/05 10:58:58.82 8kdOFrcZa.net
πをπのまま計算して最後にmπで出力してくれれば良いのにと思うことは多い

546:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9932-8Wha)
25/01/05 11:04:48.60 caTYcs4C0.net
数式処理の基礎の基礎ならこのあたりがオススメできると思う。

C言語による標準アルゴリズム事典
URLリンク(gihyo.jp)

547:高卒工員
25/01/13 10:59:54.95 EpHsvAOYM.net
「」

548:デフォルトの名無しさん
25/01/17 16:58:25.38 GO6/DX25a.net
Cの糞仕様でmath.hインクルードしてなくても
int hoge(int) って解釈されるから
本当は double hoge(double) だったり float hoge(float) だったりしても
コンパイルだけ通ってリンク後に問題起こすってのが昔はあったな

549:デフォルトの名無しさん
25/01/17 18:21:44.43 eoeaxZuy0.net
error: implicit declaration of function 'hoge' にならないの?

550:デフォルトの名無しさん (ワッチョイ 555b-pCI4)
25/01/17 18:47:49.86 is0uPVRE0.net
1のサンプルコードでコンパイル通らなかったから2のコードのようにキャストしたんだけど動き的には同じだよね?

1,pStrIndex = malloc(sizeof(TCHAR*) * count);
2,pStrIndex = (TCHAR**)malloc(sizeof(TCHAR*) * count);

551:デフォルトの名無しさん
25/01/17 19:25:43.49 aSzNgrb80.net
だまってC++のスレいけよ

552:デフォルトの名無しさん
25/01/17 19:31:42.24 frJzdCet0.net
先に心療内科の外来に相談した方が良い

553:はちみつ餃子
25/01/17 21:10:14.26 SH5Lw3P50.net
>>533
厳密に言うと extern int hoge(); と暗黙に宣言したかのように扱うルールだった。 C89 では。
C99 で削除されたルールだけど今でも警告付きで通してしまう処理系はあるな。

554:はちみつ餃子
25/01/17 23:50:49.72 SH5Lw3P50.net
>>535
C では void* から他のポインタへ暗黙の型変換が許されるが C++ では許されない。
コンパイルエラーになってるならたぶん C++ を書いてる。
(処理系によってはオプションでエラーや警告を制御できることもあるけど。)

555:デフォルトの名無しさん
25/01/19 13:12:34.18 pnTgRmOE0.net
二次方程式を式変形で解くのは「代数的」な解法な気がする

「数値的」解法はコンピュータ利用?、「解析的」解法?

556:デフォルトの名無しさん
25/01/19 13:18:38.18 ix4t29qjM.net
そんな用語の意味ごとき自分で調べてわからんか?

557:デフォルトの名無しさん (アウアウウー Saa7-C2Lh)
25/01/20 13:48:58.08 G+ryJ45Ga.net
「二次方程式を式変形で解く」の意味が
ax^2+bx+c=0 の解 α, β をそれぞれ a, b, c の式で表す
という意味なら代数的解法か?単に構文解析の気もするが
α, β を浮動小数点数(複素数を含む)で表す
という意味なら数値的解法か?解析的解法か?
単に解の公式に代入してるなら解析的解法の訳が無い罠

558:デフォルトの名無しさん
25/01/20 15:06:20.10 rx9N4QIY0.net
元の発言はたぶん円周率を近似値に置き換えないぐらいのことが言いたかっただけでしょ
5chのコテハンなんだからたいして考えてモノ言ってるわけじゃないだろうよ

559:デフォルトの名無しさん
25/01/20 17:55:23.24 CIg2w/Qm0.net
円周率は大体3

560:デフォルトの名無しさん (ワッチョイ bf2d-nfRJ)
25/01/20 20:30:52.25 pd7YCKBV0.net
奥村先生のアルゴリズム事典に二次方程式を解くコードが載ってる
解の公式だけで解くと桁落ちが生じるので解と係数の関係も使ってる。

561:デフォルトの名無しさん
25/01/20 23:33:08.85 acq30m6X0.net
ポインタについて分かりやすく説明してくんろ

562:デフォルトの名無しさん (アウアウウー Saa7-C2Lh)
25/01/21 08:28:35.17 yRL5l1cZa.net
最近どっかで観た流れだな
はちみつのコピペか

563:デフォルトの名無しさん
25/01/21 19:43:21.46 OWL66YDB0.net
コンピュータのマシン語は高級言語で言うところの「変数名」による識別子は存在しない
なにによって識別するかは
レジスタの固有名詞か
メモリでの記憶場所を示すメモリアドレス

メモリアドレスを記憶させる変数やレジスタを
特にポインタ変数やポインタレジスタと呼んでいる

564:デフォルトの名無しさん (ワッチョイ 7f07-BCxs)
25/01/22 00:18:16.97 4EbDFbn90.net
生ポは人類には早かったってばっちゃんが言ってた

565:
25/01/22 01:06:34.38 pXnIX9Zj0.net
ポインタには型があってだな、
intとか自分で定義した構造体とかの型が

ポインタが指すアドレスを起点にそれらの型(ポインタの型)が配置されているかのようにメモリにアクセスするできるようにすることだよ

アドレスには型がないけど(変な言い方だけど)そこにintがあるとかFILE構造体があるとか、そこにその型があるとしてポインタが指すからある
そうでなければただのバイトの列

intとかcharなどのプリミティブな型でなく、構造体からイメージした方が分かりやすくないかな

566:デフォルトの名無しさん
25/01/22 01:50:31.22 NkElh8NB0.net
そうだね p++ で数値が sizeof(*p)増える

567:デフォルトの名無しさん
25/01/22 17:48:11.49 NkElh8NB0.net
CもだけどC++やJavaなり関数や変数、メソッドやメンバーを参照できる範囲を絞って
安全を確保しようとしているよね

でもコンパイル後の実行コードで関数や変数のスコープチェックとかしていないしできないよね
スコープがどうであれポインタ経由で場所がわかっちゃうんだし

無能プログラマの糞コード避けにはなるけどマル�


568:Eェア対策にはならないということかな



569:デフォルトの名無しさん (ワッチョイ ff79-EhoM)
25/01/22 19:26:53.41 6faY8jOE0.net
ぬるぽ

570:デフォルトの名無しさん
25/01/22 19:44:26.98 9LZoVYPp0.net
このスレで良い度胸してるぜ笑

571:はちみつ餃子
25/01/23 00:44:38.67 fx1H86wZ0.net
>>546
ポインタをテーマにした本がある。
丁寧に説明しようとすれば本一冊分程度の分量は語れるってことだ。
それを掲示板で書ける程度の分量でより分かりやすくするのは無理だよ。
まずは入門書を読んだ上でわからないことがあれば具体的に質問して。

572:デフォルトの名無しさん
25/01/23 19:20:25.44 ruQDamXZ0.net
ポインタがすっと理解できない人はC言語は向いてないと思う

573:デフォルトの名無しさん
25/01/23 19:58:25.66 vkyBSe+H0.net
メモリの番地を直接指してるってだけの話なのに文法が意味不明なのが悪い

574:デフォルトの名無しさん
25/01/23 20:11:15.05 aOKdPI1Y0.net
Basicみたいに配列で操作すれば分かりやすいぞ 笑

575:デフォルトの名無しさん
25/01/23 20:41:15.58 1Dl3E2N00.net
前橋和弥って人の本読んで理解した 長らく絶版だったようだが後継本がある

576:デフォルトの名無しさん
25/01/23 21:30:26.88 auGoEn4C0.net
>>559
私もあれで学んだ ドロイド君みたいな表紙の旧版
わかりやすいと思う

577:デフォルトの名無しさん
25/01/25 14:13:44.88 6VZytBSB0.net
秘伝C言語問答 ポインタ編

578:デフォルトの名無しさん
25/01/25 20:08:03.53 ZNC43F5H0.net
ポインタと云うは死ぬ事と見付けたり

579:デフォルトの名無しさん (ワッチョイ cf63-uhza)
25/01/25 20:36:32.21 KsLTQwZH0.net
ポインタには殺傷能力があります。
使う人は銃器の取扱免許が必須です。

580:デフォルトの名無しさん
25/01/26 22:56:06.95 s+0AyHDZa.net
ただのアドレッシング
++したり+=1したら判る

581:デフォルトの名無しさん
25/01/28 10:28:12.96 q8xQ82Vup.net
ねえよ
おまえらなら配列ですら殺傷能力あるだろw

582:デフォルトの名無しさん
25/01/28 14:54:54.74 CBv6ZpxK0.net
配列で死ぬ奴は四天王でも最弱な奴

583:デフォルトの名無しさん
25/01/28 20:42:19.32 C7gY9jH/0.net
だからさぁ 変数や関数スコープって アドレスでアクセスされたら
アクセス拒否できる仕組みは無いよね?

584:デフォルトの名無しさん
25/01/29 06:54:15.10 NyAjG/eE0.net
で?

585:デフォルトの名無しさん
25/01/29 15:06:45.80 S8KruiE+0.net
あったらCの柔軟性が失われると思います

586:デフォルトの名無しさん
25/01/29 15:10:06.13 8Al2cjCTp.net
さすがにセグメント違反は弾かれるぞ
まあ、CPUやOSの機能だけどな

587:デフォルトの名無しさん
25/01/29 15:25:45.05 ViyYX/ol0.net
雑談として
いろいろチェックのついたポインタがあっても、それをOFFにできれば問題ないんだぞ

スピードの要らないところにもCは使われているので、そういう部分は、「ごてごて」でもいいんだよ

588:デフォルトの名無しさん
25/01/29 19:33:45.26 0piGtrVr0.net
いやポインタのはなしをしたいのではなくて
高級言語で設計制限を行うことで可読性や設計ミスが高まるという言説があるよね
構造化プログラミングやオブジェクト指向の類

でも実際稼働するのはコンパイル後のマシン語で
gotoというかジャンプ命令もあれば
プライベートへのアクセスを実行時にチェックする機構とか無いわけでしょ

不具合調査はソースコードも大事だけどマシン語の流れも追わなけば
本当のところはわからんよね
更には投機実行や分岐予測もあるわけで
実際の稼働はソースコードによらないしマシン語とも異なる可能性が存在する

589:デフォルトの名無しさん
25/01/29 19:43:26.10 4AeLlQVLp.net
え?
最終的にCPUはマシン語として解釈して動くだけだからなぁ
人間がどう捉えようがそこは変えようが無いんだ

590:デフォルトの名無しさん
25/01/29 22:18:59.64 Ow/mCh010.net
会話として成立していますか?

591:デフォルトの名無しさん
25/01/30 00:57:38.52 dOgLqtqk0.net
例えば goto文を可能な限り排除して構造化プログラミングというものが提唱されてきた
でもコンパイル後のマシン語にはむき出しのジャンプ命令が使われる
構造化されたループや分岐も実際はジャンプ命令
処理のトレースでもデバッグでもソースコードとマシン語と両方追う必要があるが
goto文を排除した理念の意味が…
ソースコードは見やすいがマシン語はそうではないよね?っていう愚痴のようなもの

592:デフォルトの名無しさん
25/01/30 08:50:49.07 w2UDYxPo0.net
むき出しのジャンプ命令...
赤裸々なMovとか、一糸まとわぬAdd とか。

593:デフォルトの名無しさん
25/01/30 09:29:28.34 x87hbq3s0.net
コンパイラひバグが無いかぎりは高級言語のソース通りに動くから大丈夫だぞ
昔のファミコン並みに処理ステップ数に要するクロックを数えてラインスクロールさせるとかでもしない限りタイミングも気にする必要無いし

594:デフォルトの名無しさん
25/01/30 11:48:21.95 1fx7BZxf0.net
むしろマルチコアの問題のほうがでかい 自分も、高効率に書ける自信がない

595:デフォルトの名無しさん
25/01/30 12:22:11.10 K2FsQpfY0.net
C言語に限らずJavaでもPythonでもLispでも最終的にはブランチしまくりヒープアクセスしまくりなマシン語で動いてるんだから心配しても意味ない。
たまたまC言語はマシン語に近い距離にある言語なのでマシン語「でも」デバッグできてしまうだけの話。

596:デフォルトの名無しさん
25/01/30 16:25:32.68 dOgLqtqk0.net
コンパイラ最適化の時点で追うのが難しい
ましてや投機実行とくると…

597:デフォルトの名無しさん
25/01/30 16:27:29.00 dOgLqtqk0.net
思い出した continue や break は優遇されている印象

598:デフォルトの名無しさん
25/01/31 01:34:44.08 5fFn3R6V0.net
Pythonだって安全じゃないしな
俺この間自作したPythonプログラム動かしたら数秒後PCが落ちた
XPとかWindows7とかじゃないぜ、Windows11の最新が突如電源が切れたんだよプツンて
まじでビビった

ちなみに原因は日本語フォントを読み込むコードをカメラキャプチャのループ内(数十から数百ミリ秒ぐらい?)で実行していた
C言語のポインタは危険とか言うけどさ、一番危険なのは俺みたいな馬鹿なコード書く奴の存在だよ

599:デフォルトの名無しさん
25/01/31 09:59:26.90 4ClqIqkw0.net
君のPCが落ちる程度は許容範囲

600:デフォルトの名無しさん
25/01/31 11:00:00.59 uHjOTXCx0.net
考えようによっては、タチの悪いDoSじゃないかw
カメラごときで全体落としてんじゃねえよ > カーネル層

ロジックバグなんだろうけど、こういうのはしかし難しいね

601:デフォルトの名無しさん (ササクッテロラ Sp3b-7ROj)
25/01/31 11:20:36.48 h9+hJoTPp.net
ドライバの秘孔を突いただけだから

602:デフォルトの名無しさん
25/01/31 11:30:08.08 4ClqIqkw0.net
ドライバーに致命的不具合があったとしても
ブルスクになる程度で
電源断まで行くと言うのは考え難い

603:デフォルトの名無しさん
25/01/31 11:49:46.06 h9+hJoTPp.net
ドライバの秘孔を突いてカメラに搭載のチップが電源ライン直結になったとかじゃね?

604:デフォルトの名無しさん
25/01/31 18:44:56.94 5fFn3R6V0.net
原因はそっち(ドライバ)ではなくスリープなしのループ内でフォントファイルに連続攻撃したことだぜ、たぶん
簡単に書くとこんな感じ

fontpath ='C:\\Windows\\Fonts\\DFJ


605:GOTEB.TTC' while True:  put_ja(point, text) def put_ja(point, text):  font = ImageFont.truetype(fontpath, 32)  draw.text(point, text, fill=color, font=font) 実際にはwhileじゃなくてafterでループさせてたけど 日本語出力の時、出力のたびにフォントファイル読み込んでたようで結果PCが落ちた 残像攻撃を受けた感じだったのかもしれん、コロ先生の分身みたいなやつ



606:デフォルトの名無しさん
25/01/31 19:36:45.83 R7Zj8Mog0.net
プリエンプティブカーネル使っててスリープなしのループごときでそんなことあり得るのか?
逆にそうなった仕組みが知りたい。

607:デフォルトの名無しさん
25/01/31 19:40:58.83 1pwkweKb0.net
インテルのTurboBoostだかで負荷もブーストされて排熱が間に合わずMBにダメージ与えつつ逝ったんじゃないの
PC買い換えた方がいいよ

608:デフォルトの名無しさん
25/01/31 19:54:38.13 R/wyJ37S0.net
ブルースクリーンもなしにおちるなんてハード不良

609:デフォルトの名無しさん
25/01/31 20:00:56.86 5fFn3R6V0.net
スレチで申し訳ないが、

俺も気にはなってるけどPC痛めつけてまでやる気にはなれない
試したいなら試してくれ、ただしどうなっても責任は負わんぞw

MicrosoftストアのPython Software Foundationってとこの奴
Python 3.13.1 (tags/v3.13.1:0671451, Dec 3 2024, 19:06:28) [MSC v.1942 64 bit (AMD64)] on win32

 OpenCVで日本語表示
 URLリンク(monomonotech.jp)
ここのputText_japaneseを参考にした(パスとかwindows用に書き換え)
んで、それを
 【簡単】QRコードの作成と読み取り in Python
 URLリンク(qiita.com)
のcv2.putTextと置き換えるように書き換えたんよ
引数のfontはなくしてフォントサイズだけを渡す
ImageFont.truetypeがフォントサイズも引数にしているから、こうすれば動的なフォントサイズ変更にも対応できるな、ヨシ!って思ってね
それ実行したらPC落ちた
それでも数回やって問題なかった記憶はあるんだけどね(ただし数十秒程度の起動時間だった)
ちょっと長めに起動させたままにしたからリソース食いつぶしたのかな?と思ってる

610:デフォルトの名無しさん (アウアウエー Sa52-FFa5)
25/02/01 12:06:57.91 Dm0gVBeEa.net
負荷掛け過ぎてコンデンサが爆発したんだろ

611: cha
25/02/09 11:28:31.00 WswbN0Go0.net
全く関係の無いことですが、ここに書き込まさせてください。
あるサイトの問題集で、巨大な数の足し算を行うのに、整数型使えないから文字型使おうって書いてありました。
どうやったらその発想ができるんですか?
私プログラミング初心者なのですが、、、

612:デフォルトの名無しさん
25/02/09 11:34:40.48 sBzel75s0.net
頭の出来だろw

613:
25/02/09 11:39:35.27 WswbN0Go0.net
プログラミングに頭の出来って関係あるんですか?

614:デフォルトの名無しさん
25/02/09 12:36:10.76 G/CYNigQ0.net
なんで関係ないと思うんだろうか

615:
25/02/09 12:44:36.92 WswbN0Go0.net
誰でもプログラミングができるって言っている人がいたので。

616:
25/02/09 12:52:16.03 WswbN0Go0.net
条件分岐とかループ処理のやつは解けるやつもあれば、解けないやつがあっても解説見れば次は出来ますが、文字列関係になると頭の中が[?]になるんです。

617:デフォルトの名無しさん
25/02/09 13:07:51.84 ql26y8Y/p.net
応用力…今の学校教育じゃ養われない能力が大切

618:
25/02/09 13:16:44.53 WswbN0Go0.net
応用力ですか、。なんか、数学と同じ感じですね。基礎ができたと思っても応用ができないみたいな。
ちなみに、応用力ってどの様に勉強すれば身につくものなんですか?

619:デフォルトの名無しさん
25/02/09 13:46:11.17 k5BYzD4Y0.net
30桁くらいの2つの整数値を筆算で加算するときの手順をイメージして
それをプログラム化してみれば良い
そんなに難しくはないだろう

620:デフォルトの名無しさん
25/02/09 13:46:45.75 KfUn2qZi0.net
>>594
そのサイトクソだよ

621:
25/02/09 14:22:12.60 WswbN0Go0.net
>>602
筆算のイメージはあるのですが、整数型でやろうとしたらエラーになって、実数型でやろうとしてもエラーになるので、なんでだろーって思って解説ん見てみたら、[文字列型にしましょう]って書いてあったので[?]ってなってしまうのです。

622:
25/02/09 14:25:19.10 WswbN0Go0.net
>>602
筆算のイメージもそのサイトの解説みてから、そうなんだと思ったんですけど、どうも初見だとイメージが沸かないんですよ。

623:デフォルトの名無しさん
25/02/09 14:27:08.84 k5BYzD4Y0.net
イメージ湧かないなら、手を動かそう
そこに答えがあるよ

624:
25/02/09 14:55:17.16 WswbN0Go0.net
>>606
なるほど、頭で考えるより、手で考えた方が良いのですか。
実践してみます。ありがとうございます!

625:デフォルトの名無しさん
25/02/09 17:03:10.36 TclGPY+C0.net
整数32bitでも64bitでも最大値は決まっている
でも大きい整数を表すのに64bit整数1つだけ使うとは決まっていない

桁溢れをプログラム的に検出して
溢れた分を別の64bit整数に記録すれば大きな整数を扱える
64bit+64bit+....
で整数を表す感じ

626:デフォルトの名無しさん
25/02/09 17:05:47.46 7kSqL9GbI
テロ組織被団協が目に余るが罪深きクソ羽田やクソ成田を核で蒸発させたら世界中のどれだけの人々の命が救われることか広島は原爆で14萬人
殺されたそうだがてめえらが鼻の下伸ばしながら頭の弱いJΚた゛まくらかしてJALだのANAだのテロリストにテロ資金供与して莫大な温室効果ガス
まき散らさせてるせいで気候変動促進、海水温上昇して土砂崩れ、洪水,大雪、熱中症にと罪なき住民殺害,世界では洪水やらで200万人以上
殺されて気侯変動難民1億人超えてる現実をア ─アー聞こえねえってクソ外道老害ジシ゛ィ挙句の果てに原爆落とした世界最悪のならず者国家
ではなく赤の他人の日本人から強奪した税金で補償しろだの寝言は死んでからほざけカス
クソ航空機という人類史上最悪のテ□がマトモかのようなプロパガンダまき散らしてクソ滑走路増やして海に囲まれた曰本でわざわざ夜まて゛
陸域縦断させてクソポリグルグ儿遊覧ヘリだのに騒音まき散らさせて静音が生命線のデジタル人材絶滅させながらDХ推進だの盆暗小池百合子は
システム障害に情報漏洩にと国民に損害を与える気満々DXとは官民ともにアプリひとつ作れない無能を解雇することをいうんた゛ボケ老害
(ref.) URLリンク(www.Call4.jp)РhΡ?tyPe〓items&id〓I0000062
ttρs://hanеda-project.jimdofreе.com/ , ttps://flight-route.Com/
ttps://n-souonhigaisosyoudan.amebaownd.com/

627:デフォルトの名無しさん (ワッチョイ de76-/Fy3)
25/02/09 17:04:41.81 TclGPY+C0.net
文字列って1Byte整数の配列でしょ?無駄が多いよ
8Byte整数の組合せを上で挙げたけど、8Byte整数の配列でも当然できる

628:デフォルトの名無しさん (ワッチョイ 0f5f-Z3xl)
25/02/09 17:14:14.93 sBzel75s0.net
無駄を省くより可読性の方が大切
8bit時代のファミコンじゃ無いんだから
そんなキリキリ詰め込んだってわけわからん事になるだけ

629:デフォルトの名無しさん (ワッチョイ 465c-6Hi7)
25/02/09 17:36:57.81 KfUn2qZi0.net
>>611
的外れ
いきるな初心者

630:デフォルトの名無しさん
25/02/09 18:12:23.04 sBzel75s0.net
桁上がりを別に判定しなきゃならないんだから扱えるギリギリの桁で計算するのはバカだろw
アセンブラなら桁あふれフラグ見て簡単に処理出来るだろうが、Cだと無理

631:デフォルトの名無しさん
25/02/09 18:46:42.50 fEimQ790M.net
>>604
どこのサイト?
それ書いてるやつ多分バカだぞ
参考にすんな

632:デフォルトの名無しさん
25/02/09 18:57:40.14 fEimQ790M.net
>>611
charでやるのは馬鹿だがアルゴリズムは同じなんだから可読性は変わらない
メモリもほぼ変わらない

633:デフォルトの名無しさん
25/02/09 19:00:51.12 TclGPY+C0.net
整数値それぞれ (左右どっちだっけ)シフト1bitやって(1/2の値)足したのが最大値の半分超えたら桁溢れ
上位桁に溢れるだけ加算
Cでもできるに決まっているじゃん これだけだよ

634:デフォルトの名無しさん
25/02/09 19:09:00.04 TclGPY+C0.net
文字列って溢れの分が1-9まであって大変そう
バイナリなら1bitだけでしょ

635:
25/02/09 19:15:54.80 WswbN0Go0.net
>>616
それってシフト演算の話ですか?(違ってたらごめんなさい。)
私、シフト演算は苦手なんですよね。
ただシフトするだけなら参考書とサイトみたらできますけど、ノールックでさらに四則演算になるとできないんですよ。

636:デフォルトの名無しさん (ワッチョイ de76-/Fy3)
25/02/09 19:34:02.21 TclGPY+C0.net
考えたらシフトは無駄だった
64bit整数のうち63bit整数で考えて最上位ビットを溢れ判定に使えばよいだけ
あんまり書くと宿題の手伝いになってそう

637:デフォルトの名無しさん (ブーイモ MMaa-6Hi7)
25/02/09 19:44:20.36 fEimQ790M.net
>>619
足したあとの結果から判定する
教えるなら定石を教えろや

638:はちみつ餃子
25/02/09 19:51:22.43 vUYqd53r0.net
二進化十進はたとえば表示の処理なんかは簡単になるので無駄なわけではない。

639:デフォルトの名無しさん
25/02/09 20:03:35.95 sBzel75s0.net
いまどき文字も16bit時代にケチケチすんなw

640:
25/02/09 22:27:12.88 WswbN0Go0.net
>>619
なるほどですね。因みにこれは宿題ではなく、自主学習のやつです。とあるサイトの解説がよくわからなくてこの板の方々に質問させていただきました。
ありがとうございます。

641:デフォルトの名無しさん
25/02/10 07:27:24.30 ZpC+jsE10.net
あと実数でやったと出たけど要注意
double verybignum;
verybignum += 1.0;
で1.0は桁を合わせると0に消えて足されない場合がある

642:デフォルトの名無しさん
25/02/10 11:48:59.09 Z13/KCo3a.net
吊りならともかく本物の初心者なら文字コードを知らないってこともあるだろうな
多倍長整数をバイト列(1桁0-255)じゃなくて文字列(1桁0-9)で表すのは無駄が多いがアルゴリズムは同じはず
それでもピンと来ないなら先に文字コードについて理解するべき

643:
25/02/10 13:13:09.48 BwJhqJpr0.net
I


644:ntelのアセンブラならBCDを扱う命令があったと思うけど、Cでやるなら文字に代入する時点で &= 0x0F、計算して出力する前に |= 0x30(でいいんだっけ?)かなー



645:はちみつ餃子
25/02/10 13:19:14.90 cWC6BpGk0.net
やや強引だがアドレスとして同じでも比較すると等しくないという結果になる例を作ってみた。
URLリンク(wandbox.org)
概念的にはポインタはアドレスというのでも間違いではないけど実際には言語のルールを把握していないと引っかかることもある。

ホスト規制でしばらく書き込めなかったので遅レスですまぬ。

646:デフォルトの名無しさん (ワッチョイ 6a56-WFrT)
25/02/10 16:46:22.93 xKid5uSQ0.net
よく分からないがこうなる理由が分からないという意味の質問かな?
まあそうだとして、C言語では異なるオブジェクトへのポインタを比較出来ないってルールがある
それが行われているので、未定義の動作といってこのプログラムではコンパイラがどんな事をしてもいいことになってる
そのどんな事の中にはnot equalを表示するという動作も含まれているので、たまたまそうなったんでしょう
初心者がよくやるFAQレベルのミスなので、ポインタとオブジェクトを理解する意味でその辺も読んでみればもっと上達するでしょう
他にもヘンな部分があるので色々他の人のコードとかも読むといいね

647:はちみつ餃子
25/02/10 17:14:00.11 cWC6BpGk0.net
>>628
ポインタにはアドレスが入ってるだけという話題が出てたからそんなことはないという注意喚起。

648:はちみつ餃子
25/02/10 17:18:14.15 cWC6BpGk0.net
>>624
文意がよくわからんが初期化されてないから不定値になってるんじゃない?

649:デフォルトの名無しさん
25/02/10 17:44:23.62 1DQgWNxh0.net
>>628
> よく分からないがこうなる理由が分からないという意味の質問かな?
このスレは初めてか?
はちみつさんがそんな質問するわけないだろ

650:
25/02/11 00:58:16.10 nkHTE6y60.net
これはどういうことなんだ?
foo、barの順にスタックに積まれる
bazにはfooの次の(intの境界の)番地(barと同じ)が入り、quzにはbarの番地が入る
bazとquzには同じ番地(値)が入っている
までは分かる
bazもquzもint型を指している
が、bazとquzの内容を比較するとことなる
なんじゃこりゃ~
酔ってなくても分からなそう

651:
25/02/11 01:04:37.69 nkHTE6y60.net
>>628がいうことがそれなのか
未定義だと
アセンブラ脳だと同じとみなしてくれてよさそうだけど、難しいね…

652:デフォルトの名無しさん (ササクッテロラ Spa3-Z3xl)
25/02/11 08:30:33.47 YWsMUNTvp.net
型変換すればOK

653:はちみつ餃子
25/02/11 11:05:12.56 0+q77CUl0.net
>>633
強調しておくけど未定義は何が起こってもよい。
この場合は一応は式が式として評価されたかのように動作してるので比較的マシな部類で、未定義を踏んでいる箇所とは遠く離れた箇所で意味不明の動作が起こることもある。(起こってもよい。)
低レイヤから入った人は未定義をナメてることが結構あるとは思う。
どのような機械語にコンパイルされるか想像できる (と本人は思っている) 故の弊害だなぁ。

654:デフォルトの名無しさん
25/02/11 11:22:08.87 kmJe274sp.net
Cなんてポインターは全部void*だろ

655:デフォルトの名無しさん
25/02/11 11:37:41.91 7Jzkf7ZG0.net
ご無体な

656:
25/02/11 12:35:30.87 m4FoXgHJ0.net
>>627 は僕のgccのパージョンだと
-O2 ありだと "not equal"
最適化なしだと "equal"

-S つけて .s をみると、-O2 ありのときポインタの比較すらせず単純に
puts("not equal");
とするコードを出力していた
"equal" のリテラルすらコードにはない

降参

657:デフォルトの名無しさん
25/02/11 13:33:00.20 jMpjlVqA0.net
strict aliasingのルールがなぜあるか理解してたらある程度予想つくだろ

658:デフォルトの名無しさん
25/02/11 14:32:56.35 VhWouMxY0.net
そもそも 8Byteや4Byte変数のポインタが例えば奇数の数値が許されるのかとか

659:デフォルトの名無しさん
25/02/11 14:40:28.60 7Jzkf7ZG0.net
文字列を指すポインタなら、一文字ずつインクリメント出来ないと困るよね

660:デフォルトの名無しさん
25/02/11 14:52:06.30 +ybAiMfGp.net
>>640
CPUによる

661:デフォルトの名無しさん
25/02/11 15:43:23.98 jMpjlVqA0.net
>>640
それどこへのレス?

662:デフォルトの名無しさん (ラクッペペ MMc6-2Ktg)
25/02/11 16:44:48.97 ZUCQJ4rmM.net
>>641
いつ困るんだ?

663:
25/02/11 16:59:49.92 MJELNENN0.net
>>628
最適化されると出力されるコードを推測することは無理だ、ということね

664:デフォルトの名無しさん
25/02/11 17:19:32.60 jMpjlVqA0.net
無理はいいすぎ
やったことないやつがしったかすんな

665:デフォルトの名無しさん
25/02/11 17:20:33.85 0gFNLz1yp.net
ARM系はほんと無理

666:デフォルトの名無しさん (ワッチョイ 5302-aFRq)
25/02/11 18:37:22.58 2gjYX+K80.net
貴方みたいな人はほんと無理
とか言われたら傷ついちゃう

667:デフォルトの名無しさん (ワッチョイ 7f1b-hc6T)
25/02/11 21:27:22.00 JzAdQ4dR0.net
とりあえず読むべし
旧石器時代のポインタをご利用の皆様へ ~provenance入門~
URLリンク(qiita.com)

668:
25/02/11 21:52:04.81 m4FoXgHJ0.net
>>649
thx!

669:デフォルトの名無しさん (ワッチョイ de76-/Fy3)
25/02/11 21:58:43.75 VhWouMxY0.net
こんなの分割コンパイルしたら分からないし ライブラリならなおさら
実行時にどのオブジェクト由来なんて情報持っておけるのか?

int func(int *ip, int *iq)
{
if (ip == iq) {
} else {
}
}

670:デフォルトの名無しさん
25/02/11 22:39:07.83 jMpjlVqA0.net
コンパイル時に決まってんじゃん

671:デフォルトの名無しさん
25/02/11 23:02:33.92 DgpMDse2d.net
このコテハンの人いつもこんなだよね
まともに出来るのが規格のコピペみたいな事だけで、それ以外だとすぐとんちんかんな事言い出して突っ込まれてる

672:はちみつ餃子
25/02/11 23:17:19.29 0+q77CUl0.net
>>651
わかる範囲でやるってだけ。
わからないところは保守的なコードを生成する。
ただ、今は LTO があるのでわかる範囲がだいぶん広い。

わからないからこそプログラマは未定義なことをしないと仮定した最適化をする (未定義を踏んでたらむちゃくちゃになる) という場合もある。

673:デフォルトの名無しさん
25/02/12 10:25:19.84 WVzDbo940.net
>>649
ポインタpとqの値が同じにならないんだけど…

674:デフォルトの名無しさん
25/02/12 10:28:46.36 p1VJlK94p.net
Cに余計なもん付けたらいにしえのLinux由来のコードが通らなくなるだろ

675:デフォルトの名無しさん
25/02/12 11:20:54.68 OojhOsKe0.net
未定義の動作がどういうことなのかよく分かっていない人がいるみたいなので補足しておく

>>629
未定義の動作を引き起こすプログラムを提示しても結果が分からないし毎回違う可能性もある点でこれだと何も示せてない
きつい言い方かもしれないが注意喚起になっていない
>>635の2行目を見るとコードの動き方に対しての認識として不定の動作と未定義の動作を混同して勘違いしてるかも知れないね

676:627
25/02/12 11:21:58.36 OojhOsKe0.net
>>632
未定義の動作なので2行目から7行目のような事が起きるかどうかは分からない
仮に未定義の動作がなかったとしても行目を自明のように仮定することは出来ない
アーキテクチャが色々ある中そういう処理系もあればそうでない処理系もあるしCでは何も規定してない
スタックの仕組みがないものもあればポインタをそもそも数値や番地で扱わないアーキテクチャもある
後段も同様

677:627
25/02/12 11:22:39.59 OojhOsKe0.net
>>645
コンパイラの動作に対して必要条件が何も設定されない状態になるという話で最適化は全く関係ない

ちなみに今回の話はK&Rの頃からあるルールなので>>649とはちょっと違う
ただ内容は大体同じでポインタはオブジェクトを指してるもので、その内部形式や扱い方はユーザーが知る必要はない

678:はちみつ餃子
25/02/12 11:47:09.26 cXwd7RB80.net
>>659
言語仕様上で未定義動作とされている状況が実際の機械の上でどう動作するか (その動作は想像できない) という文脈でヤバさを伝えるためになるべく想像外な結果を生む実例を出そうとしているので最適化は関係ある。

679:デフォルトの名無しさん
25/02/12 11:50:24.83 XyTZkBHop.net
最適化しないと無駄なコードや無意味なコードも忠実に出力されるからなぁ

680:デフォルトの名無しさん
25/02/12 12:49:03.57 J/UI6pYQ0.net
>>659
未定義だから不明を連呼されても大して参考にならんわけで
なぜ現実のgccではあのような結果になるのか理由を説明できないのか?
わかってないようだけど最適化は大いに関係してるぞ

681:デフォルトの名無しさん
25/02/12 13:26:30.21 7GgOweZ60.net
えーと未定義や環境依存を使ったりとかは
Cおよびコンピュータの理解が不十分な
質の劣るプログラマが存在するからでしょうに

そういう人達に重要プログラムを書かせる責任問題でもある

682:デフォルトの名無しさん
25/02/12 15:09:37.68 +Pz/j8Me0.net
相手に過大に説明を要求して、自分は分かろうとしない者は嫌われちゃうよ

683:デフォルトの名無しさん
25/02/12 15:17:35.67 iId2MJ1V0.net
gccのフォーラムで質問出してみたら?
参考にできる回答が得られるかも知れないよ

684:デフォルトの名無しさん
25/02/12 15:52:05.07 WVzDbo940.net
>ポインタにはprovenanceという,どのオブジェクト由来かの情報が含まれています

↑まずこれがおかしい

685:デフォルトの名無しさん
25/02/12 16:26:28.23 I956D6cKp.net
ランタイムじゃなくてコンパイル時の静的なルールだろうね

686:デフォルトの名無しさん
25/02/12 17:12:16.79 1bCkYFVx0.net
投資家はRustを信頼するって言ってるんだから、Rustとおんなじようにすればいいだけ

俺はC/C++派なので、どんどんRustの実績をぶんどってくるべきって思ってる

687:はちみつ餃子
25/02/12 17:47:13.48 cXwd7RB80.net
>>668
Rust のようにやるなら Rust のほうが巧くやれる。
当たり前だろ。

688:
25/02/13 00:32:14.00 rym7RjTu0.net
移植性が求められることばかりでもないし、最適化などのオプションも頻繁に取ったりつけたりしないし、思い通りに動かなければアセンブルリストみたりするけど、コンパイラが出力するコードが予想通りかなんて観点はないし、実践的ではないけど、人を小馬鹿にしたりしなければ勉強になって面白い話なのに

689:
25/02/13 00:34:29.37 rym7RjTu0.net
実践的でない、はちょっと違うか

690:デフォルトの名無しさん
25/02/15 13:31:47.16 vKfoke/00.net
Arduino (ESP32)で文字列変換をしたいです。
tの文字列をtm structに変換したいんですが,タイムゾーンのオフセット部分の+9:00の扱いが分かりません。
%Zはタイムゾーンのオフセットを分を指定する場合で、%zだとUTCなどタイムゾーン名を指定する場合に使うみたいでした。
どうやるんでしょうか?

URLリンク(pastebin.com)

691:はちみつ餃子
25/02/15 15:04:44.95 ewglApEf0.net
strptime で %z や %Z でタイムゾーンを扱えるのは glibc の拡張 (他で真似している場合もあるかもしれんけど) なんだけど、 Arduino の C ライブラリは glibc ベースなの?
そうじゃないなら各ライブラリ�


692:フドキュメント (またはソースコード) を読まないとわからないし、そもそもそんな機能はないのかもしれない。



693:デフォルトの名無しさん
25/02/15 16:19:42.94 BNBq5D0N0.net
>>673
どうもありがとうございます
%zのようなのを使わず+の前後で分けてまず前だけでtm structに変換して後ろはエポック秒が何かに変換して使うのがベターでしょうか?

694:デフォルトの名無しさん
25/02/15 16:25:20.46 Q9F/iLI2M.net
やり方思いついたならやれ

695:はちみつ餃子
25/02/15 16:39:17.28 ewglApEf0.net
>>674
どうやら Arduino は newlib ベースの模様。
newlib の strptime はタイムゾーンをサポートしてない。

どうにかしてタイムゾーンを扱いたい場合にどうやって実装するかは個々の事情によると思うのでなんとも言えない。
実績のある実装をどこかから持ってきたほうが良いんじゃないかと個人的には思う。
URLリンク(www.google.com)
パースするだけならたいして複雑なものではないので自分で書いてみてもいいかな。

ちなみにタイムゾーンを略称で扱うのは面倒な事情が絡む。
タイムゾーンを標準時からの差の時間で表すときはその時点での差があれば十分なので簡単なんだけど、略称で表すときはサマータイムの情報もいる。
たとえばニューヨークのタイムゾーン (EST) は普段は -05:00 だけどサマータイム中は -04:00 になる。
単に EST=-05:00 というわけではない。

そんでもってこのへんの扱いが面倒なのは変わることは割とよくあるということ。
サマータイムの期間が変わったりずらす時間が変わったり、あるいはゾーンが増えたり減ったりするのは政治的な判断なので情報を定期的に更新する前提じゃないときちんと運用できない。
パソコンの OS だと適当なタイミングで更新する仕組みがあるのが普通だけど組み込みシステムだとそうもいかないこともある。

696:はちみつ餃子
25/02/15 21:12:02.85 ewglApEf0.net
基本的なことを書き忘れてた。
strptime は C の言語仕様には無い関数で、 POSIX (UNIX 系 OS の統一仕様) にある。
POSIX は最低限の共通部分だけをまとめたもので実装には雑多な拡張を入れる前提なので各実装によってサポート内容が違う。
POSIX 準拠ではない環境で部分的に POSIX を真似てるだけ (POSIX の最低限の要求も満たしてない) ということもある。

697:デフォルトの名無しさん
25/02/16 12:03:53.19 rAQQ2/+ca.net
最初からtmstructをUTCで取得した方が楽ジャマイカ

698:デフォルトの名無しさん
25/02/17 01:18:04.49 mzGEyEzq0.net
有効な同型ポインタの比較において、同一オブジェクト/配列由来でない場合、
== の結果は 0
(未定義動作ではない)

C99(N1256) Annex J.2 Undefined behavior

— Pointers that do not point to the same aggregate or union (nor just beyond the same
array object) are compared using relational operators (6.5.8).

ここに Equality operators の記述がない。

6.5.8 Relational operators
6.5.9 Equality operators
でも同様の内容となっている。また、

N3231 URLリンク(www.open-std.org)
2024/03/21 Kleynhans, TS 6010 A Provenance-aware Memory Object Model for C, Revision Draft
N3005
2022/06/16 Gustedt, A Provenance-aware Memory Object Model for C, draft TS 6010, version June 2022

では、provenance と abstract address という用語が導入されてスッキリとした文面になっている。

699:はちみつ餃子
25/02/17 10:52:55.67 tIRsmIw80.net
C99 をあらためて読み返してみたら確かにそうだ……。

・ ふたつのポインタが等しいと判断される条件が書いてあって「その場合に限り」等しいとする
・ 各演算子は指定された関係が真の場合は1を,偽の場合は0を返す
・ 未定義と書いてある (またはそれと等価な言い回し) か動作の明示的な定義がない場合は全て未定義

等しい条件を満たさないなら 0 が返されることを保証していることになるので未定義ではないことになる。

でもまあ現実的に考えたらおかしいし、欠陥報告が出てたりしない?

700:デフォルトの名無しさん
25/02/17 19:30:42.26 iQTBmgHC0.net
>>649のサンプルプログラムで同じことが起きることってある?

701:デフォルトの名無しさん
25/02/22 07:05:24.68 nEyoRU5r0.net
>>681
WSL2 の Ubuntu 22.04.5 にインストールされている gcc 11.4.0 で gcc -O でコンパイルしたら起きた。
-O なしだと起きない。

702:デフォルトの名無しさん
25/02/22 12:11:54.96 DWcN/KDk0.net
余計なことを

703:デフォルトの名無しさん
25/02/22 14:47:10.43 nEyoRU5r0.net
最適化オプションの有無で違いが出る状態はできれば止めて欲しかったな。やるとしても別オプションでやって欲しかった。

704:デフォルトの名無しさん
25/02/22 16:41:59.90 Z2hFLtuL0.net
その壁越えられないやつ多いよね
仕事でも最適化すると動かなくなるからってオフでリリースしてた雑魚エンジニアいたわ

705:デフォルトの名無しさん
25/02/22 17:57:58.33 HOxFgRC/0.net
コンパイラのバグって事じゃないのか?

706:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b132-FOV+)
25/02/23 20:21:42.14 5K9CwmG10.net
>>684
-0 はいくつかの具体的な最適化オプションを束ねたものだよ。
URLリンク(gcc.gnu.org)
このうちのどれが効いてるのかは知らんけど。

707:デフォルトの名無しさん
25/02/23 21:01:43.23 VuC2otmU0.net
>>685
最適化オフでのリリースは一つの有力な選択だと思います。

708:デフォルトの名無しさん
25/02/23 21:45:10.07 K8mfivgh0.net
最適化に副作用あるのは常識

709:デフォルトの名無しさん
25/02/23 21:54:21.08 FQnOu1obM.net
>>688
まザコならしょうがないわな
組み込みならハードのコスト一段下げられるけど諦めるしかない
そんなザコ会社だから低収入もしかたない

710:デフォルトの名無しさん
25/02/24 01:00:54.17 IorN2uWP0.net
自己紹介かな

711:デフォルトの名無しさん
25/02/24 17:12:08.95 qLUUxQg70.net
gccなら-O0でも実施される最適化はあるので本気で最適化オフにしたいなら-O0で有効になる項目を-fno-に個別に指定する必要がありそこそこ面倒

712:デフォルトの名無しさん
25/02/24 17:18:13.77 SlW5Uo1a0.net
最適化オフとか言ってる人は、UBを踏んでしまってるから最適化で動作が変わるってことわかってんのか?

713:デフォルトの名無しさん
25/02/24 17:22:09.48 qLUUxQg70.net
まあコンパイラの最適化バグである可能性もないわけではないがな

714:デフォルトの名無しさん
25/02/24 20:28:13.00 V/nislFh0.net
組み込み分野だと最適化によりデバッグがしづらくなることが多い。

715:
25/02/24 21:56:17.54 JeKlmQzN0.net
gccで -O2 なし -Wall ありでコンパイルすると strict aliasing の警告がでないけど、
-O2 -Wall ありだと strict aliasing の警告が出るケースに当たったのだけど、
strict aliasing って安全に最適化するためのアレなのですかね(最適化しないときは strict aliasing には無頓着)

716:デフォルトの名無しさん
25/02/24 22:52:40.44 ifUFLigf0.net
この人たち�


717:zントgccが大好きだよね



718:デフォルトの名無しさん
25/02/24 23:27:53.22 LsxokMxo0.net
gccはいろんな環境で動かせるので便利ではある

719:デフォルトの名無しさん (ワッチョイ ae76-A0+M)
25/02/25 01:13:30.67 t+eQGWY+0.net
>>695
それ組み込み関係ないから

720:はちみつ餃子
25/02/25 08:31:05.22 6jOr+W/20.net
>>696
警告を出すためには警告の条件に引っ掛かっていることがわからないといけないという単純な前提がある。
結果を使いもしないのに警告のためだけにエイリアス解析を頑張るのは合理的か?

721:デフォルトの名無しさん
25/02/25 09:04:02.65 ODzMt1Nm0.net
>>699
そうだった

722:
25/02/25 23:42:18.97 MFbkYyJ10.net
>>700
最適化しないときは strict aliasing が不要なものなんですかね(最適化のための strict aliasing なんですかね)というつもりで書いたのだけど、分かりにくくてすまんね

723:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b132-Ah42)
25/02/26 10:14:24.43 6jOr+W/20.net
>>702
少なくとも GCC や Clang では strict aliasing rules は最適化のためのものという認識で正しいよ。
-fstrict-aliasing (やこれらを含む -O2 以上の最適化) が有効になっているときに限りエイリアスベースの最適化をするし、そのときだけ strict aliasing rules が守られていることを要求する。

724:デフォルトの名無しさん
25/02/26 11:04:16.19 x+jOZkKw0.net
strict aliasing rulesを守らないと未定義動作となるのはC言語の決まりなので特定の処理系で問題ないから守らなくて良いという考えは馬鹿のすること

725:デフォルトの名無しさん
25/02/26 11:20:14.18 t+eQGWY+0.net
というかstrict aliasing rulesをわかってるやつがあえて守らないって考えにくいでしょ
このスレを見てわかる通りわかってないやつらが大半

726:はちみつ餃子
25/02/26 11:38:18.47 6jOr+W/20.net
ビットパターンを別の型で読み替える可能性があるなら最初から union で書いておいたほうが人にとっても読みやすいしな。
(C++ では union でも common initial sequence の読み替えしか許しておらず、 C より制約が厳しいので注意。)

727:はちみつ餃子
25/02/26 15:23:36.19 6jOr+W/20.net
>>704
未定義は「規格としては何も要求しない」なので処理系が何らかの追加保証をすることを禁じてない。

728:デフォルトの名無しさん
25/02/26 15:45:51.57 x+jOZkKw0.net
特定の処理系と心中するつもりでstrict aliasing rulesを守らない奴がいたらすごい馬鹿

729:
25/02/26 23:04:05.93 0kyhL3S/0.net
>>703
助言をありがとうございます!!
>>702 より

730:デフォルトの名無しさん
25/02/27 00:09:51.30 oCSgSskf0.net
>>708
移植しないなら別にいいんじゃないの

731:デフォルトの名無しさん
25/02/27 08:29:36.37 Uw13P3Kf0.net
>>710
将来の更新の可能性も考慮しないわけね

732:デフォルトの名無しさん
25/02/27 09:04:57.33 smeEQtfp0.net
だから将来も移植しないんだろ

733:デフォルトの名無しさん
25/02/27 09:23:08.30 Uw13P3Kf0.net
移植と更新は違うぞw

734:デフォルトの名無しさん
25/02/27 10:21:51.11 6jIPAcTSM.net
そのどうでもいい仮定話いつまでやんの?

735:デフォルトの名無しさん
25/02/27 22:25:43.54 rdt/oSxr0.net
【帰化朝鮮人を論破】
日本は帰化朝鮮系の家系の人間によって隣国の大韓民国と北朝鮮に侵略行為を受けている
彼らがやっていることは「差別」を盾にした日本人を対象にした迫害であり「民族浄化」である
国際法でもこのような行為は決して許されていない
しかし何となく加害者が日本人で、差別されているの朝鮮系と言う意識を刷り込まれて彼らに遠慮してないか?

事実は逆である、加害者は彼らの方で迫害されているのは日本人である、まずこの意識を共有しよう

なぜそうなっているのか? 新聞、出版社、司�


736:@、テレビ局、会社の起業家、大学教授などが帰化系の人間で徒党を組み 日本人を差別、排除してまるで日本人であるかのように振舞っているからである テレビに映り世論を形成している人間が日本人の振りをして韓国、北朝鮮に有利になるように論調を組み、 日本を支配し、日本人が朝鮮人に隷属することを強要している これが侵略行為以外のなんなのか? なぜ日本人が日本で差別の対象にならなければいけないのか? 帰化系が起業し外部の朝鮮系と通じ合い会社を成功させる、または帰化系が既存の会社組織でトップに居座り 管理職を帰化人系のみで固め、日本人は閑職に追いやられ、パワハラで辞職に追い込まれ その会社の技術を朝鮮半島に流出させ、日本企業が競争力を失っていく 芸能人、テレビ局員、スポーツ選手(五輪代表、野球、サッカー)、報道関係者は帰化系で独占されている もはやテレビに映る人間はほとんど日本人ではないと考えろ  では何をするべきか? もはや野党はほぼ全員、もはや自民党も過半数以上は帰化朝鮮人系の家系の人間が国会議員を占有しつつある まず「政治家に立候補する時、外国の家系の人間か否かを公表する」を提出して過半の賛成を取って立法化しよう 国際的にもごく一般的で、アメリカでも何系かはすべて明らかにされている そうなると帰化人の家系の人間に支配されたメディアは差別だと糾弾し始め帰化人たちが暴動やら起こすだろう、 日本は荒廃の一途を辿る、内戦状態に近いものになる だがそれは当然のこと、国内で隣国の人間による侵略行為、民族浄化行為を受けているのだから 時間はあまりない、やつらが過半数を確保してからでは遅い、韓国北朝鮮に占領されてしまう 日本人よ、まず声を上げるのだ



737:デフォルトの名無しさん
25/02/27 22:56:45.28 c6/rsZNB0.net
まず統一を潰さないと

738:デフォルトの名無しさん
25/02/28 00:14:09.12 FWjziINm0.net
>>714
次のお題が来るまで(w

我流独習マン(俺含む)には、こそっとありがたい話
ややもするとすぐ浦島になっちまうw

739:はちみつ餃子
25/02/28 10:32:16.41 aDguz5rE0.net
>>706
念のために確認してたら union のメンバを他の型の違うメンバで読み替えて良い規則は JIS (JISX3010:2003) には書いてないっぽい。
欠陥報告で後から修正したから JIS を出した時点では原文にも書いてなかったんだな。
URLリンク(www.open-std.org)

740:はちみつ餃子
25/03/11 17:38:04.47 GvJGmymX0.net
C の公式サイトが登場!
URLリンク(www.c-language.org)

741:デフォルトの名無しさん (ワッチョイ dd01-ctMQ)
25/03/12 20:15:01.01 echC0lcV0.net
AIのおかげでCが主流になるかもな

742:デフォルトの名無しさん (ササクッテロル Sp85-ZS5M)
25/03/12 21:03:53.54 pJ5qTyUbp.net
>>720
それは無い

743:デフォルトの名無しさん (ワッチョイ 794b-XET2)
25/03/12 21:59:36.42 WyQEi83H0.net
AIコーディングが進化した結果直接機械語で出力できるようになったけど人間が読めないのは困るから最低限人間が読めて速度も出るCで出すのが主流になるみたいな妄想

744:デフォルトの名無しさん
25/03/12 22:07:09.85 /p3tzJNRp.net
AIは何も指定しなきゃjavaやpythonやC#のコードを吐き出す�


745:�



746:デフォルトの名無しさん
25/03/18 10:34:05.62 mIJI9ibF0.net
cはむずい定期

747:デフォルトの名無しさん
25/03/19 20:09:43.41 WDKEEomI0.net
文法的にはポインタ周りが(少し)難しいだけ
個人的にはpythonの方が難しく感じるな

748:はちみつ餃子
25/03/19 20:44:03.52 SWZJHd7L0.net
C が未定義をエラーとして補足せずに黙って変になることがあるのは入門書などをまともに読まずにいろいろ弄って学ぶタイプの人には向いてないな。
ちゃんとした入門書をちゃんと読むならそんなに難しいわけではない。
しかし難しくないことでもしょうもないミスをするのが人というものだという現実もあって、特に規模が大きくなると C はしんどい。
難易度とかいうのとは別の話として、理解していても間違う。

749:デフォルトの名無しさん
25/03/20 04:57:02.69 07u24rkx0.net
まあしかしこの頃のコンパイラは警告やエラーを沢山出してくれて分り易いよ。
昔のはチェックが緩くて出なかったからな。
その状態から gcc で printf() のフォーマットと引数のチェックが出来ると知った時は衝撃を受けた。

750:デフォルトの名無しさん
25/03/20 17:01:49.87 iinwNT6F0.net
>>727
それな、オプションさえちゃんと付ければ昔でもできてたよ

751:はちみつ餃子
25/03/20 17:31:14.06 PqZkwPwR0.net
GCC では遅くても 2.95.3 には attribute で文字列が書式であることを指定できて型チェックする機能はあった模様。(2001年頃)
URLリンク(gcc.gnu.org)
ただな、このスレにいるようなおじさんの言う「昔」は 1980 年頃の話だったりするんよ。
MS-DOS 用とか CP/M 用とかのコンパイラの話なんよ。

752:デフォルトの名無しさん
25/03/20 17:39:11.70 Enps6Akh0.net
その年代の人はおじさんじゃなくておじいさんでは

753:デフォルトの名無しさん
25/03/20 17:45:05.08 iinwNT6F0.net
>>729
スマソ、俺はちょっと若すぎたわ
だいぶ昔からできてた記憶があったがそれよりさらに昔の話とは恐れ入った先輩

754:デフォルトの名無しさん
25/03/20 18:23:15.20 0dSk8Oyx0.net
メインフレームにダム端末繋げてた時代じゃよ

755:デフォルトの名無しさん (スフッ Sd33-4EpX)
25/03/20 23:54:14.30 t3XlSG3jd.net
gcc7.1から突然エラーメッセージが親切になったのはあるな
ちょうどclang+llvmが話題になった時期でそれに対抗したらしい

756:デフォルトの名無しさん
25/03/21 07:44:18.11 6cMMiEqo0.net
>>728
それはどのぐらい昔かによる。
80年代後半にはまだなかったと思う。

757:デフォルトの名無しさん
25/03/21 07:45:09.98 6cMMiEqo0.net
>>729
そうそう。80年代。

758:デフォルトの名無しさん
25/03/21 08:19:02.26 kfFumR870.net
真理子版が便利すぎた。

759:デフォルトの名無しさん
25/03/22 13:52:41.80 A90b+kK90.net
他人にも使わせるツールに環境変数「真里子」はキモすぎてビビった

760:デフォルトの名無しさん
25/03/22 14:25:25.39 U6/Lg1xxa.net
>>729
scanf, sscanf で float, double に %f, %lf のところを %f, %f にしてバグるのがありがち

761:627
25/03/22 15:31:32.91 7ZrFn0ve0.net
scanfなんて使ったことねーや
ありがちってほど使ってるんか

762:デフォルトの名無しさん
25/03/22 15:40:39.16 8J5Eq6PC0.net
scanfに道に落ちているを食べさせてはいけません

763:デフォルトの名無しさん
25/03/28 08:23:03.00 +OZuQWBg0.net
この警告、環境によっては出ないの?

$ cc ld.c -Wall
ld.c: 関数 ‘main’ 内:
ld.c:6:19: 警告: 書式 ‘%d’ は引数の型が ‘int’ であると予期されますが、第 2 引数の型は ‘off_t’ {aka ‘long int’} です [-Wformat=]
  6 |  return printf("%d", offset);
   |         ~^  ~~~~~~
   |          |  |
   |          int off_t {aka long int}
   |         %ld
$ cat -n ld.c
   1 #include <stdio.h>
   2 #include <sys/param.h>
   3
   4 int main() {
   5  off_t offset = 1;
   6  return printf("%d", offset);
   7 }
   8

764:デフォルトの名無しさん
25/03/28 08:29:47.68 v2Oxq7uoM.net
おれの作ったCコンパイラはそんな警告出さないけど何か文句ある?

765:740
25/03/28 09:29:48.60 +OZuQWBg0.net
>>742
あー、なるほど。↓よ。

$ cc --version
cc (GCC) 14.2.0
Copyright (C) 2024 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.

766:はちみつ餃子
25/03/28 11:25:13.48 gM96YdDw0.net
>>741
出さないコンパイラはあるし、その場合に警告を出すコンパイラであっても printf 類を特別扱いしてなんとかしてるので、可変長引数一般では型が合わないときに検出されない。

767:740 (ワッチョイ 492a-aKLX)
25/03/28 13:15:49.58 +OZuQWBg0.net
なるぽろ。%ld に変更せず、放っておくか。ありがとう。

ちなみに、逆に、%ld だと警告する場合も有り得るのだろうか。例えば off_t が非 long の機種があるとか。

768:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ed32-p0tU)
25/03/28 13:32:37.75 gM96YdDw0.net
x86-64 なら System V ABI ではどうせ 64 ビットレジスタで受け渡されるからそこんところでは問題にならないのだが、最適化したときにどうなるかまるで予想がつかない。 放置してよいとは言えない。

いったん intmax_t にキャストするのが正当な方法だと考えられている。
URLリンク(www.jpcert.or.jp)

769:デフォルトの名無しさん
25/03/28 15:39:13.17 Gm0qUC0n0.net
struct X* x;で自動変数を定義した場合
スタック上のどこかにstruct Xの領域が確保されたりしますか?

770:デフォルトの名無しさん
25/03/28 15:47:02.39 v2Oxq7uoM.net
されない

771:740
25/03/28 17:27:47.76 +OZuQWBg0.net
>>746
> printf("%ju", (uintmax_t) x);

なるぽろ。ありがとう。

772:デフォルトの名無しさん (ササクッテロラ Spf1-7PGi)
25/03/28 19:09:11.37 Yj8GIx0sp.net
なんだよjって、何の略だ?

773:はちみつ餃子
25/03/28 22:16:42.65 gM96YdDw0.net
>>750
なんらかの単語の略 (頭文字) というわけではないらしいよ。
> j is sort of like "i" for integer
URLリンク(www.open-std.org)

774:
25/03/28 23:06:36.11 UFqBPtr80.net
μ→uみたいなものか

大文字の I はもう使われてふのかな?

775:デフォルトの名無しさん
25/03/29 16:07:35.02 M3jsTRd4a.net
long long や unsigned long long の出力に %lld や %llu って昔は使えてた気がするが
最近はだめなんかな
%I64 とか %U64 みたいなのになってるん

776:はちみつ餃子
25/03/29 16:54:36.19 HRez4USp0.net
>>753
I64 とかはマイクロソフトの拡張。
新しい方法じゃなくてむしろ古い方法が互換性のために残されているだけ。
今となってはあえて使う理由はない。

777:デフォルトの名無しさん
25/03/29 17:30:28.12 bd7PveSA0.net
>>753
> %I64 とか %U64

移植が大変そうね。

778:デフォルトの名無しさん
25/04/08 18:05:53.82 f9O97Hv70.net
sudo で実行すると execl が動作しないように見える。なぜ?
$ cat -n e.c
   1 #include <stdio.h>
   2 #include <unistd.h>
   3
   4 int main() {
   5  pid_t pid;
   6  if ((pid = fork()) > 0) return 0;
   7  else if (pid < 0) return 1;
   8  execl("/bin/bash", "/bin/bash", "-c", "echo $$ $PPID >> /tmp/log", NULL);
   9  _exit(2);
  10 }
$ gcc -g e.c
$ ./a.out
$ cat /tmp/log
10593 1566
$ sudo ./a.out
$ cat /tmp/log
10593 1566
$

779:627
25/04/08 19:31:31.59 HmugccjD0.net
まずコピーするなら手を入れるな手を入れると他も全部疑わなきゃいけなくなる
それからsudo -E ./a.outとsudo strace ./a.outを試せ

780:デフォルトの名無しさん
25/04/08 19:45:35.63 dAM9KaxA0.net
縦の数字はなに?
普通にエラーになるだろそれ

781:デフォルトの名無しさん
25/04/08 20:08:58.79 0fraKCca0.net
catの引数に-n指定してるからだろ

782:デフォルトの名無しさん
25/04/08 20:57:19.94 brzdTu7q0.net
手元にあるfedora で試したが、
sudo ./a.out の結果表示は2行になった
多分、正常に処理できたようだ

783:
25/04/08 22:40:53.76 NxLLuNcW0.net
うちはダメでした
>>756 と同じような結果です
ubuntu22.04 lts

784:
25/04/08 22:43:01.77 NxLLuNcW0.net
あ、次のようにしたときです
sudo ./a.out

/tmp/log に追記されませんでした

785:755
25/04/08 22:49:40.17 Rmhs1Vne0.net
>>760
えー!? と別環境で実行したら、sudo でも execl が動作したように見える。なにこれ。

$ ./a.out
$ cat /tmp/log
13706 1
$ sudo ./a.out
$ cat /tmp/log
13706 1
13721 1
$

取り敢えず、うちの Ubuntu の「おま環」問題のようでした。お騒がせしました。
ただ、今回のは bash の $PPID が init (1) になるという新たな謎が...

786:はちみつ餃子
25/04/09 00:22:33.67 06ntJanv0.net
親プロセスが先に死んだら子は init の養子になる。
だけどこの場合だとどちらが先に死ぬかはプロセスのスケジューリング次第で状況によるってことなんじゃないのかな。
Linux の事情はよく知らんけど。

787:デフォルトの名無しさん
25/04/09 00:23:29.81 Z/QH/Jgt0.net
Linux 板で聞いた方が回答ありそうな気がする。

788:デフォルトの名無しさん
25/04/09 15:00:16.84 cB69i6Vg0.net
const unsigned char t100_day[3807] PROGMEM = { 0x89, 0x50, 0x4e, 略, }
const unsigned char t100_night[3568] PROGMEM = { 0x89, 0x50, 0x4e, 略, }

String tenki_i = "01";

char*const unsigned char t100_day[3807] PROGMEM = { 0x89, 0x50, 0x4e, 略, }
const unsigned char t100_night[3568] PROGMEM = { 0x89, 0x50, 0x4e, 略, }

String tenki_i = "01";

char* y_icon; // FIXME 型が分からない

if (tenki_i == "01") y_icon = "t100_day";
else if (tenki_i == "01_n") y_icon = "t100_night";
else if (tenki_i == "08") y_icon = "t200_day";
else if (tenki_i == "08_n") y_icon = "t200_night";
else y_icon = "t999_day";

sprite.drawPng((std::uint8_t*)y_icon, sizeof(y_icon), 0, 25);


t100_dayなどは画像なんですけど、tenki_iの中のstrによって画像を変えたいです。
y_iconはどうやって指定したらいいでしょうか?

789:デフォルトの名無しさん
25/04/09 15:01:47.32 cB69i6Vg0.net
>>766
コピペ間違えました
正しくは以下です


char*const unsigned char t100_day[3807] PROGMEM = { 0x89, 0x50, 0x4e, 略, }
const unsigned char t100_night[3568] PROGMEM = { 0x89, 0x50, 0x4e, 略, }

String tenki_i = "01";

char* y_icon; // FIXME 型が分からない

if (tenki_i == "01") y_icon = "t100_day";
else if (tenki_i == "01_n") y_icon = "t100_night";
else if (tenki_i == "08") y_icon = "t200_day";
else if (tenki_i == "08_n") y_icon = "t200_night";
else y_icon = "t999_day";

sprite.drawPng((std::uint8_t*)y_icon, sizeof(y_icon), 0, 25);


t100_dayなどは画像なんですけど、tenki_iの中のstrによって画像を変えたいです。
y_iconはどうやって指定したらいいでしょうか?

790:デフォルトの名無しさん
25/04/09 15:16:14.76 qDwL9bg0d.net
>>756もそうだし書いちまったもんはしょうがねーけどコードを載せる時は
どうしろこうしろって書いてあんだから従えよ
アンタどこ行ってもそんな感じなのか?


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch