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もそうだし書いちまったもんはしょうがねーけどコードを載せる時は
どうしろこうしろって書いてあんだから従えよ
アンタどこ行ってもそんな感じなのか?
791:デフォルトの名無しさん
25/04/09 15:24:40.77 Hnk7Q6m60.net
すみません、書き直しました
URLリンク(ideone.com)
t100_dayなどは画像なんですけど、tenki_iの中のstrによって画像を変えたいです。
y_iconはどうやって指定したらいいでしょうか?
792:デフォルトの名無しさん
25/04/09 15:27:10.13 lI8vd/RJ0.net
>>756
fork呼んだ親プロセスがreturn 0でいきなり終わってるのがダメ
wait呼んでプロセスの終了待ちしろ
793:はちみつ餃子
25/04/09 18:01:06.77 06ntJanv0.net
>>769
その断片的なプログラムではよくわからんが型を合わせるだけなら y_icon の宣言はこうなるべきだと思う。
const unsigned char* y_icon;
794:はちみつ餃子
25/04/09 18:30:26.27 06ntJanv0.net
>>769
ところでそれは C++ じゃない?
なんでこのスレで聞くの……。
795:755
25/04/09 19:53:07.12 dFJfWRF+0.net
>>770
「お騒がせしました。」と言ったので、勝手ながら質問を終えた気がしていた。見てくれて有り難う。
>>756,763 については、Ubuntu においても sudo で execl は動作していた。
動作しないように見えたのは、Ubuntu 特有のファイル権限設定があり、root といえどもファイルにアペンドできないせいだった。Qiita にあったサマリが解りやすい。
URLリンク(qiita.com)追記
> Ubuntu の /tmp のユーザファイルに root で追記できない
全く C言語に関係なかった。ごめんちゃい。
796:デフォルトの名無しさん
25/04/20 14:12:51.27 RiHDJnuQa.net
stdbool.h 真面目に使ってる人いる?あるいは使ってない方がおかしい?
797:はちみつ餃子
25/04/20 16:06:51.19 srj6a33k0.net
原則としては論理型が必要であれば stdbool.h (内で定義される bool) を使うべきだと思う。
論理型が C99 で導入されるより前の古いプログラム中で bool という名前を使っている場合に配慮して論理型の名前を _Bool にした上でその別名の bool を stdbool.h 内で定義するという変な構成になっている。
(もし bool という名前を独自の定義で使っている場合は単に stdbool.h を使わないという選択が可能。)
このような状況から、互換性の問題がなければ論理型は bool という名前にしたかったし、論理型の値は true, false と書きたいという意図が感じられる。
自分が書くプログラム内で名前が衝突するような問題がないのなら意図に乗っかっておくのが無難そうに思われる。
C23 からは bool, true, false がキーワードとして直接にサポートされるようになって stdbool.h は意味を失いただ存在するだけになった。
こういう変更をする以上はこれが C のあるべき新しい姿と考えられてるってことなんだろう。
stdbool.h を使うことで (古い規格でも) 新しい姿を先取りできるわけ。
ただ、 C23 の変更はちょっとだけ互換性を損なう部分があるから注意を要する。
stdboo.h で定義される旧来の true, false は 1, 0 に展開されるマクロで、要するに型で言えば int だった。
C23 からの true, false は bool 型のリテラルという立場を持つ。
これが問題になるケースはそれほどないとは思うけど……。
798:デフォルトの名無しさん
25/04/20 16:30:31.97 VYLrteqj0.net
bool型だと関数成功はtrueで1
int型だと関数成功で0とか普通
混ぜるな危険
799:デフォルトの名無しさん
25/04/20 17:33:04.38 SQJ2+pRN0.net
戻り値が負数ならエラーってやつが(ry
800:デフォルトの名無しさん
25/04/20 18:02:02.88 AC61QJPP0.net
関数の結果がboolのやつはエラー原因丸めて何が問題かわからないからクソだよな
801:デフォルトの名無しさん
25/04/20 18:06:56.21 sZ1mcHs70.net
>>774
なんでstdbool.hがあるのかよく分からないってこと?
802:はちみつ餃子
25/04/20 19:55:37.89 srj6a33k0.net
>>779
「真面目に」というワードから「そんなにカッチリやるほどのもんかね?」みたいなニュアンスを感じる。
意味はわかった上でそれほど価値を感じてないのだと思う。
803:デフォルトの名無しさん
25/04/20 21:08:15.13 0ZeTNaMX0.net
#define false 1==0
#define true !false
不真面目なんでいつもこれでやってました
804:デフォルトの名無しさん
25/04/20 21:22:34.91 SQJ2+pRN0.net
>778
エラー理由が必要なやつは引数に返り値用ポインタ要求する設計になってんじゃね?
805:デフォルトの名無しさん
25/04/21 02:34:30.39 DqUDvQMka.net
>>778
関数の結果の型がboolのやつが-1を返す例もあってな
806:はちみつ餃子
25/04/21 05:17:15.86 jNnWMUsR0.net
>>781
stdbool.h がやってるような
#define false 0
#define true 1
ではなく無意味に遠回りな書き方をする理由は何?
807:デフォルトの名無しさん
25/04/21 05:35:14.60 gJLXVah/0.net
そういや、boolの実値は処理系依存とはるか昔に習ったようなキモス
808:デフォルトの名無しさん
25/04/21 05:47:00.09 wZXY8H1ed.net
>>784
FAQを読め
809:はちみつ餃子
25/04/21 05:54:01.88 jNnWMUsR0.net
>>786
これのこと?
URLリンク(c-faq.com)
そういのを好む人もいるとだけ書かれていて、理由の説明はない。
810:デフォルトの名無しさん
25/04/21 09:56:56.17 i498vk5cp.net
#define TRUE (0==0)
#define FALSE !TRUE
この書き方はまだ世の中がBASICでソフト組んでた頃に見たわ
たぶんそれ以前のどこか別の言語からの輸入なんだとは思うが
かっこいいから好んで使ってる
811:デフォルトの名無しさん
25/04/21 09:58:55.59 JjvQDxsX0.net
まあ、まだtrueが0以外って仕様だった頃に、より処理系に沿った正確な値が欲しかったんだ
812:はちみつ餃子
25/04/21 11:43:45.70 ++xqwTI40.net
>>789
PDP-11 時代の C のリファレンスマニュアルを見つけることが出来た。
URLリンク(web.archive.org)
1975 年頃のもので、このときすでに比較演算子や等価演算子は 1 か 0 を返すことになっている。
たぶん最初からそうだったと思う。
C の基礎になった B の時点で既にこのような仕様なので。
ただ、全ての処理系が完璧に同じ仕様に沿っていたわけでもないだろうし、当時の事情の中で有用なテクニックだった可能性はあるかもしれない。
813:デフォルトの名無しさん
25/04/21 12:00:52.53 QKqUxhO90.net
いまでも「0は偽」という仕様しか謳われてないように見えるがどうだろう
むしろ「偽は0」という仕様が消えているようにも思えるが、どうだったっけ
814:はちみつ餃子
25/04/21 12:43:19.49 ++xqwTI40.net
>>791
_Bool は整数型 (標準符号無し整数型) に分類されている。
整数型は他の整数型に変換したときに変換後の型で表せる範囲であるなら同じ値になるルールなので _Bool 型の 0 は 0 だよ。
815:デフォルトの名無しさん (ワッチョイ f9ac-0INX)
25/04/21 12:51:37.31 NLKNLeTR0.net
関数の戻り値だと、
0は正常終了、非0は異常終了
というのが多かったと思う
816:
25/04/21 13:16:11.04 3FvSqisv0.net
論理型のある言語でも
If b = True Then
なんて書かれるとモゾモゾしてしまう
817:デフォルトの名無しさん
25/04/21 13:36:06.07 0RekbFS70.net
false=0,true=1に決めたとしても、いにしえのboolがint型な影響で行儀の悪い関数から2とか-999999999を返せてしまって
1以外のtrueで意図しない分岐になる恐れがあるから、ifの条件は0か非0かで判断しましょうというバッドノウハウ的なルールになったようだ
818:デフォルトの名無しさん
25/04/21 13:51:07.27 0RekbFS70.net
BOOLの定義にさらに混乱に拍車をかけたのがWindowsAPIのGetMessage()で、戻り値の型をBOOLとしておきながら
実際には0、0以外、-1を返すというBOOLの概念が揺らぐような凶悪な仕様でif文に対し疑心暗鬼になったプログラマーが発生した
URLリンク(learn.microsoft.com)
819:デフォルトの名無しさん
25/04/28 20:12:17.56 LzrB3b/O0.net
初心者です
vcのCL.EXEにパスを通したいのですがどれに通せばいいかわかりません。
86フォルダと64フォルダにそれぞれさらにフォルダが二つあって合計で4つCL。EXEが4っつあります。
86と64は32ビットと64ビットの違いかと思うのですが、64のフォルダにも二つあるのでわかりません
820:デフォルトの名無しさん
25/04/28 20:13:33.98 LzrB3b/O0.net
>>797
CL。EXE
CL.EXEの間違え
821:はちみつ餃子
25/04/28 20:19:59.93 clGXfLYj0.net
>>797
vcvarsall.bat にパラメータを渡して実行するか各アーキテクチャ向けバッチファイルを実行することで必要な環境変数の設定がされる仕組みになっている。
URLリンク(learn.microsoft.com)
これらのバッチファイルを経由せずに直接環境を設定するのはやめたほうが良い。
バッチファイルの具体的な内容は各環境によって (インストール時の条件などによってかな?) 違うので他環境でインストールしたバッチファイルを持ってくるなと注意書きがある。
822:デフォルトの名無しさん
25/04/28 20:39:54.03 LzrB3b/O0.net
>>799
自分で直接やらない方がいいのですね
はって頂いたページを見ましたが初心者には難しいですね
でもこちらに載ってあるBATファイルで設定するのがいいのですね
ありがとうございます
823:はちみつ餃子
25/04/28 20:54:09.97 clGXfLYj0.net
>>800
私自身は今は使ってないからあまり把握してないのだけれど、普通にインストールしたらそのバッチファイルがスタートアップメニューに登録
824:されなかったっけ?
825:デフォルトの名無しさん
25/04/28 21:29:48.61 es1rmYMQ0.net
>>801
探してみたのですが見つかりませんでした。
PC買い替えたので改めて環境設定しているのです。
もう一度インストールし直すとあるかもしれませんね。
私が消してしまった可能性もなくはないので
826:デフォルトの名無しさん
25/04/28 21:32:36.04 PCWkr5M/0.net
自分でPATHを通してみろ。っていう実習だとしたら。
たとえば、Hostx64の中のx86は、x64上でclを実行して、出てくるバイナリはx86用ってこと
「そうやって覚える」のもアリだが、vcvarsall を使いこなすこともぜひ覚えよう
827:デフォルトの名無しさん
25/04/28 21:45:04.99 x+drcUbt0.net
パスだけ通しても環境変数設定しないとincludeファイルが見つからないとか色々言われそう
828:デフォルトの名無しさん
25/04/28 22:03:09.10 ALNkeUhz0.net
cl.exeの質問したものです
あらためてインストールしたらスタートメニューにコマンドプロンプトがでてきました。
以前使っていたやつと同じのなのでcl.exeが実行できます。
みなさん親切にありがとうございました!!
829:デフォルトの名無しさん (スフッ Sdbf-6bHF)
25/04/29 05:05:37.13 YS1K5N/ud.net
>>805 Windows環境だと俺はまだ、command prompt for developerを使わないとcl.exeを実行できない。すごいなぁ
830:デフォルトの名無しさん
25/04/29 09:10:59.69 zaEbcMdv0.net
Windows は難し過ぎ。
831:デフォルトの名無しさん (アウアウウー Sa1b-Dl8r)
25/04/29 12:55:09.96 TmvDscRda.net
Nim入れたら勝手にcl実行出来るようになってた気がする
832:デフォルトの名無しさん
25/04/30 19:36:25.43 IchQwRQ5H.net
Windowsでコマンドプロンプトを使ってのC言語って、
VCにしてもMingWとかにしても、
どうにもイマイチよな
なんならDOS時代のBorland Cとかの方が
IDEとの相互運用性があった気もするが
まあ、きょうびプログラミングといえばもうLinux一択ですしねえ
833:デフォルトの名無しさん
25/04/30 20:41:49.51 SXWYOndw0.net
ゲーム開発とかWindowsだろ
Linux一択ってお前狭い世界しか知らないだけだぞ
834:デフォルトの名無しさん
25/04/30 20:47:22.61 KuvXDJPY0.net
狭いWindowsの世界から飛び出そう
835:デフォルトの名無しさん
25/05/01 03:44:24.96 xFwps2mR0.net
Windows一択とは言ってないね
その論理思考能力でプログラミングやってて大丈夫?
836:デフォルトの名無しさん
25/05/01 10:14:05.05 nTiKCI2Ra.net
>>809
*nix系のcmakeとWindowsのCMakeは別物だったと思うけど
VSはプロジェクトからmakefileを造ることは可能だったはず
メリットがあるかどうかは知らん
837:デフォルトの名無しさん
25/05/01 13:40:32.60 pf/ZHGigd.net
VCって、C言語にとてもよく似た、ともすればほぼ同じ文法でソースを書ける、
何かのフレームワーク用の開発環境だよね
838:デフォルトの名無しさん
25/05/01 14:35:25.46 nTiKCI2Ra.net
MFCのことか
839:デフォルトの名無しさん
25/05/01 20:39:23.67 ZetavPXj0.net
>>813
nmakeがmakeと別物であってcmakeはWindowsでも一緒だろ
840:デフォルトの名無しさん
25/05/03 00:28:21.78 HHJZofaV0.net
錆び付いたC言語で今を打ち抜こう
841:デフォルトの名無しさん
25/05/03 07:50:52.82 v3weHkV10.net
>>817
何を使用して?
842:デフォルトの名無しさん (ワッチョイ bf5f-8SS3)
25/05/03 10:18:34.76 sPbW4KAD0.net
>>818
投げ捨てられたautoconf
843:デフォルトの名無しさん
25/05/03 16:53:00.85 ZpfRANr50.net
>>817-819
良い歌詞だね
曲付けてもらえば?
844:デフォルトの名無しさん
25/05/03 18:56:34.42 Q4RX0Sa/0.net
スマホとPCの作業を効率化したい--「Copilot Vision」の便利な8つの活用例
2025-05-03 07:00
URLリンク(japan.zdnet.com)
1 プログらまーまこれを改造してるので上記以外の状態でも使用できるようにしている
2 すでにプログラムがあるので1~コードを作成する必要が無い
ボイス・トォ・スカルの本態が一般パソコンにまで来たのでつい買い捨てができるようになった
マネーロンダリング 談合 インサイダー などがはかどるといわれる
845:デフォルトの名無しさん
25/05/03 18:58:42.72 AGoX3tlE0.net
タイトルは青春の蹉跌あたりで
846:デフォルトの名無しさん
25/05/05 08:50:37.13 3AfvJi9A0.net
“イリヤ神”がまたやった 動画生成AI「FramePack」が革命的なワケ
2025年05月05日 07時00分更新
URLリンク(ascii.jp)
4月17日に登場した動画生成AIプログラム「FramePack(フレームパック)」が世界的に衝撃を与えています。PCロ
847:ーカル環境で動画AIを動かすには、少なくともビデオメモリー(VRAM)が12GBあるビデオカードを搭載していないと難しいというのが常識でした。ところが、VRAM 6GBでも安定的に動作させられるため、一気に動画AIの裾野を広げそうです。開発したのは、画像生成AI分野で「ControlNet」や、使いやすいツール「Fooocus」などを開発してきたことで知られる、スタンフォード大学に在籍中のIllyasviel(イリヤスフィール、以下イリヤ)さん。既存の方法論にまったく違ったアプローチでブレイクスルーを引き起こす、“イリヤ神”のアプローチに再び注目が集まっています。 中略 AI動画を作ってみたいけれども、スペックが足りないために諦めていたという人が次々に自前の環境で試すようになってきました。既にワンパッケージでインストールできる環境も整えられているため、スタートも簡単です。様々なファイルをダウンロードしてくるため、初期設定は2時間くらいは見ておく必要があるものの、圧倒的にハードルが下がりました。
848:デフォルトの名無しさん
25/05/05 16:26:03.24 gTSTkGJ70.net
>>823
オンボのグラフィックスでも動きますか?
メインメモリは24GBです
849:デフォルトの名無しさん
25/05/07 15:22:05.67 Nuqzm3Wk0.net
下記は全て2025年5月7日の記事
OpenAI、ChatGPTの6つのモデルの違いと適切なプロンプトを解説
URLリンク(news.mynavi.jp)
Microsoftの新規のソースコードの約3割をAIが生成、Nadella氏が明かす
URLリンク(news.mynavi.jp)
スコットランドの住民を悩ます謎の怪音「ヘブリディアン・ハム」の正体はいまだ不明
URLリンク(karapaia.com)
850:デフォルトの名無しさん
25/05/07 15:47:16.05 n3ae2haO0.net
怪音をお尻から出してる奴、正直に名乗り出なさい
851:デフォルトの名無しさん
25/05/08 08:38:35.44 KCA9Lwh4d.net
WSLでdebianを使っているけど、動作が軽いし便利だよね vscodeの起動も早い
852:デフォルトの名無しさん
25/05/09 07:07:15.84 +l+evNW70.net
もう見抜けない、最先端のAIディープフェイク動画は心臓の鼓動まで再現、判別が困難に
2025-05-08
URLリンク(karapaia.com)
853:デフォルトの名無しさん
25/05/09 13:25:09.01 3M4tliEX0.net
天国は良い所か聞けばわかるよ
854:デフォルトの名無しさん
25/05/09 19:22:34.32 rWwF6jNu0.net
帰って来たヨッパライか。
855:デフォルトの名無しさん
25/05/09 22:19:38.30 toYOiewu0.net
>>719
なんこれCプログラマなのに初めてみたは…
WGのサイトは見ててあそこが公式と思ってた
最近出来たんか
856:デフォルトの名無しさん
25/05/09 22:21:43.53 toYOiewu0.net
公式ホームページ(半世紀遅れ)
良いドメイン取れてよかったね
857:デフォルトの名無しさん
25/05/10 14:39:03.43 17EyeKMh0.net
>>826
はい。
858:デフォルトの名無しさん
25/05/24 20:58:15.38 aQkh9jD40.net
初心者一名様ご案内、興味あれば以下よろしく。
スレリンク(tech板:10番)-
概略:
PHPでoniguruma(正規表現ライブラリ)最新版の機能を使いたい為、
(文法含めて)C言語の知識がまるでないのに環境構築してコンパイルし、
コードの問題(未改修箇所)も見つけて動かしてしまった剛の者(ただしかなりラッキーパンチ)
とはいえGitHub上で活発にやりとりしてるし、ポテンシャルは高い
PHPとPythonは使えるらしい
すまんが俺自身は他人に教える事自体には興味ない
俺は「他人のコードを読む経験が不足している」と自認しており、
それなりの品質が期待されるコード(=有名なOSS)は機会を見つけて読む事にしていて、
今回もonigurumaのコードを読む機会として便乗しただけ
だからお前らが同様の事をやるなら便乗してもいい
俺の文法/規格の知識は完全にお前ら以下で、よく「それC++」と言われてる連中と同程度
(俺はCとC++を分離出来てないし、C++コンパイラで通る範囲のCしか使ってない)
俺はお前らがやってる重箱の隅的問題には興味なく、もっと大局の、
「この仕様/機能を実現する為、どういうコード戦略で記述するか」に興味がある
(数行のコード内での詳細文法ではなく、数万行のコードをどう構成するかに興味ある)
最近気に入ってる言語はJS
859:デフォルトの名無しさん (ワッチョイ 1f35-rwyI)
25/05/25 19:39:48.52 OO+eY7q40.net
?
キモ
860:デフォルトの名無しさん
25/05/27 14:54:10.14 qQFXqwqXd.net
カッコ書きを多用してるから多分ADHDなんだろう
ここでも他に時々見かけるけどまあそっとしといてやれ
861:デフォルトの名無しさん
25/05/27 15:25:06.34 K50j2XjJ0.net
星たちは「音」を奏でていた。楽器のように。歌のように
5/26(月) 19:00配信
URLリンク(news.yahoo.co.jp)
量子世界では鏡の中心で本物と鏡像が溶け合う観測不能ゾーンが発生する
2025.05.26 MON
URLリンク(nazology.kusuguru.co.jp)
1キロ先から「幅3ミリの文字」が読めるレーザーを開発!
2025.05.26 20:00:48 MONDAY
URLリンク(nazology.kusuguru.co.jp)
862:デフォルトの名無しさん
25/05/28 08:34:27.62 d5fn07f20.net
【悲報】財務省、廃棄したはずの森友文書を別の開示請求でうっかり開示してしまう🥺 [928380653]
2025/05/25(日) 14:40:21.21
スレリンク(news板)
第三者委員会「エロ小説漏洩は斎藤知事の指示の可能性が高い」 [595582602]
2025/05/27(火) 14:50:41.31
スレリンク(news板)
元総務部長が裏切り「斎藤知事に指示されてやった」 斎藤兵庫オワコン逮捕😭 [659060378]
2025/05/27(火) 23:30:03.48
スレリンク(news板)
立花孝志 業務上横領の疑いで刑事告訴 警視庁が受理(画像あり) [659060378]
2025/05/27(火) 21:37:55.62
スレリンク(news板)
863:デフォルトの名無しさん
25/05/28 10:43:48.21 U7MV9uLa0.net
おれもHDMIでDVIだよ
864:デフォルトの名無しさん
25/05/28 20:10:39.46 EIair+pr0.net
【兵庫】「知事・元副知事の指示に基づき正当業務を…」斎藤知事の“側近”井ノ本氏の弁明書 知事は改めて否定 [ぐれ★]
2025/05/28(水) 17:08:14.82
スレリンク(newsplus板)
※追い詰められてないか?
865:デフォルトの名無しさん
25/05/28 21:43:45.39 PBslL45A0.net
スレに関係無いもん貼るなよ
866:デフォルトの名無しさん
25/05/30 13:31:01.21 XWQpoVmBa.net
もうプログラマー寄り付かなくなってるんじゃまいか
867:デフォルトの名無しさん
25/06/23 13:59:19.19 gexPgDcc0.net
C言語の終焉か
868:デフォルトの名無しさん
25/06/23 14:32:37.67 gJ1K/dLq0.net
プログラマーの終焉
869:デフォルトの名無しさん
25/06/23 15:24:01.44 Le9JOtTU0.net
C は終焉の C
870:デフォルトの名無しさん
25/06/24 09:50:49.50 17zM306Da.net
文部科学省が標準のローマ字表記を改めるんだってよ
871:デフォルトの名無しさん
25/06/28 16:40:01.58 uH6ba5rfM.net
しょぼい機器でも物凄い性能だから、C言語を使う必要もなくなっている。
872:デフォルトの名無しさん
25/06/28 16:47:05.13 WGUfZy3xp.net
もはやjavascriptすら動くからなぁw
873:デフォルトの名無しさん
25/06/28 21:00:47.99 HZiRGN/SM.net
ただまあ、バイト単位で処理したい時には JS や Python や Java や Ruby
より便利だけどな。
874:デフォルトの名無しさん
25/06/28 21:01:32.93 HZiRGN/SM.net
あと、文字コードだとかを勝手に変換しないというのも便利だな。
875:デフォルトの名無しさん
25/06/30 06:22:37.34 m9Iz5ero0.net
結局、自作したいだけかよw
876:デフォルトの名無しさん
25/06/30 11:37:57.93 YZeS8CxH0.net
外食に飽きると自炊を始めるものだよ
877:デフォルトの名無しさん
25/06/30 12:00:43.86 rn9gnazy0.net
そろそろc談義したいぞ…
878:デフォルトの名無しさん
25/06/30 13:32:07.78 Bi14XNYeM.net
C/C++は、(レンタル)サーバーサイドでも、ソースコードを盗まれないというメリットがある。
879:デフォルトの名無しさん
25/06/30 13:49:28.37 Bi14XNYeM.net
PHPは一見便利なように見えても、何をやっているのか不安が残る部分がある :
・文字コードの扱い。勝手に変換される可能性。それが脆弱性の原因になる可能性がある。
・SessionID の管理のされ方。それがブラックボックスで余り説明が無いので危険。
・文字列が「長さ指定文字列」と「0終端文字列」との二種類あり、デフォルトは前者だが、
正規表現系は後者である場合があり、それを知らないと脆弱性の原因になる。
880:デフォルトの名無しさん
25/06/30 18:59:51.22 YQWckD/50.net
最近はFPGAでコンピュータ作ってるけどメモリが4kbytesとかしかないのでC言語があると助かります。
881:デフォルトの名無しさん
25/06/30 20:50:19.20 YZeS8CxH0.net
アセンブラ使え
882:デフォルトの名無しさん
25/06/30 20:56:51.68 i+8hTHYI0.net
そこまでのキツい環境ならC使わずにアセンブラ使えって思う
883:はちみつ餃子
25/06/30 20:57:51.84 bv4WQiut0.net
その規模なら C で書くにしても配慮すべき低レイヤの事情がありすぎてあまり C の甲斐がなさそうだと私も思う。
884:デフォルトの名無しさん
25/07/01 02:30:13.65 LkiphQyhM.net
PHPの文字列は、1つの文字列の中でも、文字によってバイト数が異なるそうだ。
だから、$str[$k] の $k は、文字単位ではなくバイト単位。
文字単位で指定したい場合には、
mb_substr($str, $k, 1, "UTF-8")
とするとのこと。
文字列の終端には一応 0x00 が入っているが、文字の長さはバイト数で管理されており、0を
終端とはみなしていない。だから、文字コードが 0x00 の文字も文字列の中に含めることが可能。
$str = "こんにちは";
echo strlen($str); // バイト数(UTF-8なら15)
echo mb_strlen($str); // 文字数(5文字)
ところが、正規表現を扱う場合には、0x00 のバイトが含まれていると、文字列の終端と
みなされることがある。だから、ユーザーによって入力された文字列を正規表現で
安全チェックを
885:したつもりでも、文字列の途中に 0x00 のバイトが含まれていて、 それ以後に危険なコードをが含まれている倍がある。 C言語で作っていれば子の様な齟齬は起きない。
886:デフォルトの名無しさん
25/07/01 05:48:42.66 M5z4vIa80.net
>>860
× > PHPの文字列は
○ unicodeは
× > C言語で作っていれば
○ asciiに限定すれば
お前は基本的なところがまるで理解出来てない
そもそも文字コードの話なのだから、どの言語でも同じ
特定の言語を使用すると回避出来るとかいう話にはなり得ない
887:デフォルトの名無しさん
25/07/01 06:18:52.12 M5z4vIa80.net
と思ったが、もしかして最近の言語はutf-8をネイティブサポートしていて、(=内部文字列がutf-8)
この辺を全部自動的に回避出来るのか?(=プログラマに文字コードの知識が全く必要ない)
Cはutf以前だから勿論サポート無し
PHPはWeb言語だから文字列=バイトストリーム扱いで、共用体が駆使されるネット向けになってるだけ
JSはutf-16だったがサロゲートペア導入でAPIが2つある(サロゲートペア対応版と非対応版)
Rustは知らんが、さらっと調べた限りutf-8で、逆にインデックスアクセスが出来ないらしい(3文字目を[3]で取得出来ない)
ただこれだと遅くなるだけなので、Cを駆逐したいと言いながら便利さを追求してるRustは迷走してる
Pythonは、どうやら全自動で出来るみたいね…
888:デフォルトの名無しさん
25/07/01 08:38:13.77 WjfKubzqM.net
>>861
859は別に間違ったこと言ってないでしょ
そこまで上から目線で言いたいならunicodeは書記素クラスタで考えないといけないので可変、ぐらい言わないとね
コードポイントならUTF-32は4バイト固定だし
むしろc言語はasciiという言い方は複数の意味でおかしい
889:デフォルトの名無しさん
25/07/01 09:47:54.97 M5z4vIa80.net
>>863
俺は859は根本的に勘違いしてる(≒間違っている)という見方を今も変えてないが、
少なくとも862の方が詳しいようだから(859の相手は)お前に任せるわ。
俺より詳しい奴が居る場所で俺が説法する意味もなく、
馬鹿と初心者が無限に沸くネットで間違いを全部指摘して回るのは無理だし。
下から目線のゆとりZ様同士でよろしくやってくれ。
どのみち俺とお前らではどうやっても合わないのはこれまでも散々経験してきた事だ。
890:デフォルトの名無しさん
25/07/01 09:48:28.12 M5z4vIa80.net
とはいえ一応内容について触れておくと、
> 書記素クラスタ
重ね文字等の事は知ってるぞ。ただ俺はこれは仕様が決まってないかと思っていたのだが、一応あるんだな。
URLリンク(unicode.org)
ただこれ、問題は"Unicode 16.0.0"と、バージョンがやたら高い事にあると思う。
自然言語が既に16回も改訂してるわけはないので、中途半端な仕様を決め、改訂しまくってるという事だから。
今の仕様で実装しても、出来上がる頃には仕様が改訂されている事もあり得る。
> コードポイントならUTF-32は4バイト固定だし
当然これも知ってるが、現実的にutf-32を使う事はほぼあり得ないだろ。
文字列処理は結局の所速度/メモリ重視だから、utf-32ではコードは書きやすいかもだが使い物にならない。
つかこの辺859に言ったところで通じるわけもなく、マウントが目的になってるのはお前の方だ。
だからこそ「上から目線」に過度に敏感なのがゆとりZの傾向でもあるが。
> むしろc言語はasciiという言い方は複数の意味でおかしい
話を続ける気があるなら、何の事なのかもう少し具体的に言え。
まあ一言ずつに纏めると、
859: PHPは文字の扱いに色々問題があるが、C言語にはない
860: お前は根本的に間違ってるから、文字コードについて勉強し直せ ← 859に通じる範囲で返事してる
862: 俺の方が詳しいのに上から目線ウゼエ ← マウントを取り返しただけで、859に通じるようには書いてない
ここら辺がゆとりZがコミュ障な所だ。
まあそれでもお互いにやるのは自由、よろしくやってくれ。
俺は降りる。
891:デフォルトの名無しさん
25/07/01 10:03:19.08 0aieN+8C0.net
普通に何も考えずに使ってて問題起きないならstrlen以外にもmbslenとかwcslenみたいなのを用意されることはないんだよな
892:デフォルトの名無しさん
25/07/01 10:07:53.62 O7C1rCRT0.net
ああついでに言っておくと、
ゆとり以前(=俺):内容が正しければ態度なんてどうでもいい
ゆとりZ:ボクがどんなにマヌケな間違いをしていたとしても、
優しく丁寧に教えてくれる事が絶対条件で、
優しければ内容が多少間違っていても許容される(←いやこれは俺は許容出来ねえ)
という違いだな。まあゆとりZ同士でよろしくやってくれ。
ただまあ、Qiitaのスレとかチラ見してるが、
発言の自由がある=どんな馬鹿でも発言出来る=間違った情報も当然発信される、なのだから、
Qiitaに正確性を求めるのは仕様的に無理なので、連中も間違ってて、
Qiitaは玉石混淆な上で、石が大量生産されるのは仕様として甘受し、玉を探すべきだとは思うがな。
とはいえQiitaが石→玉化する機構を持ち合わせられない(=間違いを指摘する事すら出来ない)
のは上記ゆとりZ価値観の賜だから、詰んではいるが、それでも(Qiitaというサイトが)無いよりは断然いいし。
つまりだな、お前らゆとりZは「上から目線ガー」とか一々やってるから駄目なのであって、
「相手」(今回は859)に向き合う気がないから、
Qiita等の「一方的に発信するだけ」のツールは断然相性がいいが、
そこで「双方向な議論」とかはまるで出来ないんだと思うぜ。
859にとって困るのは、「上から目線」ではなく、「間違いを指摘してもらえない」事だろ。
(ただこれがゆとりZに取っては違うらしいので俺にはどうにも合わないが)
893:デフォルトの名無しさん
25/07/01 10:57:25.82 M5z4vIa80.net
リンクは以下の方がよかったかも
URLリンク(hydrocul.github.io)
> Grapheme cluster の境界定義
> CR の次に LF が続く箇所は境界にならない
これだとCRLFは一文字扱いだから、utf-8の0x7f以下だけ使っても(厳密には)asciiとは違うって事か?
なんで一々仕様を無駄に変更するのだ?という気はするが、
見てる限りunicodeって自然言語学者が策定してる仕様で、プログラミングのし易さなんてまるで考慮して無いな
894:デフォルトの名無しさん
25/07/01 16:58:38.98 W1sziXWKM.net
PHPに限らず、文字コードを勝手にいじくる言語は脆弱性の温床になる。
C言語は指示しない限りは何もしないから、むしろ安全。
860は、馬鹿だから理解できない。
895:デフォルトの名無しさん
25/07/01 17:04:55.37 W1sziXWKM.net
中途半端に自動化しようとしていることが脆弱性の温床になる。
詳細な仕様を書かないで「こういう場合にはこうすれば安全ですよ」
みたいなのが結構危ない。
なぜ、そうするのか。その関数は厳密に何を行っているのか。
「簡易言語」には、そういう情報が欠落していることが多い。
896:デフォルトの名無しさん
25/07/01 17:07:29.61 W1sziXWKM.net
フレームワークも危険だ。
「完成品」として何もカスタマイズしないで使っているなら、安全かもしれない。
ところが、「プラグイン」と呼ばれているものを組み合わせたり、
独自にカスタマイズしようとすると、とたんに危険になる。
なぜなら、仕組みが分かりにくく、ソースが巨大で解読しにくいことが多いからだ。
特に問題なのはオープンソースのフレームワークだ。
ソースが汚いものが多いから、それが原因で理解が難しくなり、脆弱性が入り込む。
897:デフォルトの名無しさん
25/07/01 17:10:17.61 W1sziXWKM.net
860は、物事の理解が甘い。
自分が馬鹿なことに気付いてない。
5chだけで偉そうにしている馬鹿。
898:デフォルトの名無しさん
25/07/01 17:12:20.54 rc7NgUjs0.net
自己紹介ですか?
899:デフォルトの名無しさん
25/07/01 17:15:03.47 W1sziXWKM.net
>>873
おまえは、自覚が無い馬鹿だ。
900:デフォルトの名無しさん
25/07/01 17:41:41.27 0aieN+8C0.net
全然違う話になったぞ???
901:デフォルトの名無しさん
25/07/01 19:57:14.17 4pZHV5xo0.net
けどさ
今のWindowsって内部的にはUTF16LEなんだよな
それをアプリ側に合わせてマルチバイトに変換したりしてるわけで
902:デフォルトの名無しさん
25/07/01 20:03:31.00 M5z4vIa80.net
>>875
まあ859もゆとりZだったというオチだよ。
見えてた展開ではあったが、放置するのも問題かと思って最低限のツッコミを860でしたつもりだったが、
ゆとりZが釣れまくってどうにもならねえ。脱線しすぎ。
5chにはコミュ障が多いのでついでに解説しとくと、
859のテイ、何だかよく分からん独り言は、ゆとりZ特有のムーブで、
・質問して答えてもらえないと傷つくし、
・議論提起してボコられたら嫌だし、
・何だかよく分からん独り言にしとけば、どういう展開になっても逃げられるし!!!
って事で、傷つかない為に予防線張りまくりの戦術、連中なりの「コミュ上手」な手法らしい。
いやいや、お前ら一々メンドクセエわ。
903:デフォルトの名無しさん
25/07/01 20:04:09.01 M5z4vIa80.net
>>869
> 860は、馬鹿だから理解できない。
お前がどう思おうと自由だが、さすがに俺よりお前の方が賢いと思う奴は居ないと思うぞ。
まあこれも862と同様のゆとりZ特有ムーブで、「ばかにされた!!!」事が内容に勝ってる。
いやいや、お前がそもそもマヌケな事を言わなければ防げた展開だろ、とはならない。
> PHPに限らず、文字コードを勝手にいじくる言語は脆弱性の温床になる。
> 特に問題なのはオープンソースのフレームワークだ
少なくとも今のお前より理解してる連中が作ってるから、
今のお前の知識と知能で作った物よりは安全だろうよ。
ついでに言うとこれもゆとりZの特徴で、
心根で他人を見下してるからこんな発言になるし、また、
心根で他人に対してマウントを取りたい、上から目線で話したい、と思ってて、でも我慢してるからこそ、「上から目線」に過敏になる。
オープンソースにゴミが多いのも事実としても、
同じ物を作るのはかなり大変なのも、結果的に生き残ってる物はそれなりに鍛えられた品質なのも事実。
各言語処理系なんて相当の人数が関わって改善された結果だから、同等以上の品質の物を作るのは事実上無理だと思うけど。
ゆとりZは「謎の心根の『上から目線』」がありすぎ。
それでいて「表面的な『上から目線』」にゼロトレランスなのはちゃんちゃらおかしいのだが、まあ連中はここら辺を矛盾に感じないらしい。
連中は表面的なコミュニケーションしか出来てないってのがこの辺から分かる。
904:デフォルトの名無しさん
25/07/01 20:14:50.32 O7C1rCRT0.net
>>876
それは正しいよ。
サロゲートペア以前はutf-16が各国文字を固定長で扱える(多分)唯一のエンコードだったから、
ローカライズ前提のwindowsの内部コードをutf-16で作るのは正しい。
逆に言えば、サロゲートペア以前はutf-32なんて使う意味なく、実際使われてもなかったはず。
今固定長に拘るならutf-32しかないけど、Rustがutf-8を選択したのは、utf-32は使い物にならないという判断のはず。
(まあゆとりZなら「俺の判断の方が正しい」となるのだろうが、
俺の心根はそこまで「上から目線」ではないので、Rust陣営の判断はそれなりに尊重する。
なおRust信者は死ねと常々思っているが、それとこれとは別の話)
905:デフォルトの名無しさん
25/07/01 20:20:08.26 4pZHV5xo0.net
そうではなく
OSレベルで自動変換が行われているのに
言語レベルの自動変換に文句言うのもなんだなぁと
そういう話
906:デフォルトの名無しさん
25/07/01 20:35:01.95 M5z4vIa80.net
>>880
その意味なら、OSレベルの自動変換はされてないぞ。
例えば、SJISファイルはSJISファイルとして保存されてるだろ。
Windowsに保存する限りあらゆるファイルが自動的にutf-16にされ、
もう二度と各ファイルのエンコードを気にする必要がないのなら、大半の人はこの方が助かるとは思うが。(俺もこれでいい)
同様に、.NETでファイルストリームを開いたら、あらゆるエンコードが自動的にutf-16になって見える、って事もないだろ。
(APIチラ見する限り、Text.Encodingがあるから手動で切り換えのはず)
ただこれを目指した物がBOMなのだろうけど、上手く機能してるとは思えないね。
907:デフォルトの名無しさん
25/07/01 20:40:05.31 4pZHV5xo0.net
sjisファイルを読み込んでメモ帳で表示させる場合、内部のレンダリングエンジンとかはutf16に変換されたものじゃねえの?
それをまたsjisで保存する際には変換されてる
908:デフォルトの名無しさん
25/07/01 20:41:51.49 4pZHV5xo0.net
winapiのA系もutf16に変換されてる表示されているんじゃないの?
909:はちみつ餃子
25/07/01 20:42:58.47 4QEmYdel0.net
>>881
A 付きの API は OS が変換するよ。
ファイルの読み書きもロケールの設定によっては変換する。
わかりやすく観測しやすい例としてはファイル名は変換してる。
そもそも NTFS の規格からしてファイル名は Unicode が前提だし。
910:デフォルトの名無しさん
25/07/01 20:43:09.72 M5z4vIa80.net
>>880
あ、ちなみにコピペなら、あれはアプリ側がやってるらしいぞ。
例えばメモ帳でSJISファイル開いて、Ctrl-C、その後utf-8の別アプリ(メモ帳でもいい)でCtrl-Vしたとき、
正しくコピペされる(=文字化けしない)が、これはアプリが対応してるかららしい。
ソースは、以前、対応してないアプリがあって、コピペが上手く機能しなかったとき、
「Windowsのメモ帳ですら対応してるのに、なんだこの糞アプリはッ!!!とブチ切れてた奴を見たから。
OSがやってくれてるのならこうはならない。
911:デフォルトの名無しさん
25/07/01 20:56:30.50 M5z4vIa80.net
>>883-884
確認した。
AとWがあり、Aは自動変換してくれるようね。
Win32APIだから、「OSが自動変換してくれる」と表現するのも正しいね。
>>880
上記で了解した。
912:デフォルトの名無しさん
25/07/01 22:22:40.31 0+2Ys+XXM.net
>>878
的外れなことばかり言ってんじゃないぞ、大馬鹿ものめ!
馬鹿はC言語スレに来るな!
913:デフォルトの名無しさん
25/07/02 04:17:04.40 ZRfP3NsY0.net
phpやアプリで入力された文字をwebアプリで扱う話
なのか
メモ帳みたいにwindows固有のShift_Sisでの文字の処理の話
なのか
914:デフォルトの名無しさん
25/07/02 05:01:21.76 kZMPfHAD0.net
文字コードとプログラミング言語の区別が付いてないゆとりZが、
「ぼくのさいこうのせきゅりてぃ!!!」を語って馬鹿にされただけの話
ついでに考えてみたが、Windowsの場合はファイル読み込み時に変換かけ、
CLR上のStringも、C#のStringも、またWindows上のStringも、全てutf-16、という美しい世界なのだろうが、
これだと同様にクリップボード上のテキストもutf-16だと思われ、文字化けする理由が分からん
(俺が遭遇した物はエンコーディングによってコピペが出来たり出来なかったりしてた《ように見えた》)
なおWin10以降はutf-8を目指しているのかも?
URLリンク(www.momopoem.com)
とはいえ、Cの話ではないな
unicodeスレでやれってこった
(あるのかは知らんが、スレがあってもおかしくない程度にはunicodeは複雑)
915:デフォルトの名無しさん
25/07/02 06:16:59.91 5Jo8M0S90.net
内部表現がUTF16LEであって、表面上はシステムで設定した文字コードってだけの話だよ
日本語環境だとデフォルトS-JISだったのをWindows10の途中からutf-8にした(ユーザ側で変更は可能)
メモ帳もデフォルトがutf-8になった
クリップボード上のテキストはアプリケーションがクリップボードにデータを預ける
その預けるデータ形式に読み取り側が対応していないと機能しないと言うだけ
シンプルなテキスト形式ならCF_TEXTがANSIでCF_UNICODETEXTがUTF16LEになる
CF_TEXTにしか対応していないか、両方対応しているけどANSI優先させてしまっている場合(ないと思うが)になら環境依存文字が文字化けすることもある
916:デフォルトの名無しさん
25/07/02 08:07:25.64 c2tqUwxf0.net
わからんことはもうAIに聞いたら教えてくれるのに
917:デフォルトの名無しさん
25/07/02 08:13:07.97 pWg0Xl5Z0.net
>>890
了解した。
API見る限り、一つのクリップボードに複数のデータ形式を登録でき、しかも自動変換まで行ってくれるのだから、
CF_UNICODETEXTだけ対応しておけば文字化けはほぼ無くなるので、彼が糞アプリ具合にキレたのも分かった。
> システムは、特定のクリップボード形式間でデータを暗黙的に変換します。
> ウィンドウがクリップボードにない形式でデータを要求した場合、システムは使用可能な形式を要求された形式に変換します。
> URLリンク(learn.microsoft.com)
> クリップボードの形式 変換形式
> (中略)
> CF_TEXT CF_UNICODETEXT
> (中略)
> CF_UNICODETEXT CF_TEXT
918:デフォルトの名無しさん
25/07/02 09:02:06.13 kZMPfHAD0.net
ちな、unicodeスレ
文字コード総合スレ part15
スレリンク(tech板)
919:デフォルトの名無しさん
25/07/06 09:24:52.33 jyZjYPic0.net
>>862
python(リファレンス実装、すなわちcpython)の文字列内部表現は全部UTF-32だよ
やはり(概ね)固定長がプログラムで処理しやすい
外部的にはutf-8を吐くけど
920:デフォルトの名無しさん
25/07/06 11:52:20.38 v3CN8ECgp.net
英語圏から見たら一文字に32bitも使うなんて勿体無いと思う
921:デフォルトの名無しさん
25/07/06 12:26:15.50 WJe1asKY0.net
emoji全盛なので英語圏は~という見方は時代遅れ
922:デフォルトの名無しさん
25/07/06 13:29:05.42 OCq4/vpt0.net
アスキーコードは0の¥0から127のDELまでしか使ってないのだから絵文字も1バイト内に収められそう
923:デフォルトの名無しさん
25/07/06 13:49:41.25 WoCgxATG0.net
128からは北欧やロシア特有の文字で埋められているからなぁ
924:デフォルトの名無しさん
25/07/06 14:21:04.82 Zx51jGf/0.net
>>894
おお、utf-32の実装例が有ったか
しかしcpython(1991)に対しサロゲートペア導入(1996)なので、
utf-16ではなくutf-32にしたのは謎だな
先見の明があったのか、(その頃既にunicodeが枯渇気味なのを知っていたとか?)
或いはサロゲートペア対応時にutf-16→utf-32に書き換えたのか?
925:デフォルトの名無しさん
25/07/06 14:23:19.54 WPORaY9rx.net
iモードの絵文字:271文字
Unicodeの絵文字:約4000文字
合字を含めると10万文字以上
(英字2字から国旗を生成する、
人物の肌の色や髪型を指定する、
「カップル」や最大4人の「家族」を1人ごとに
大人・子供、男女、肌の色、髪型を指定する等)
Appleの絵文字:
自由な文章や顔写真などからAIが生成するため
組み合わせは無限大
(例:自撮り画像を用意して
「サーフィンをする俺」
と指定すれば、写真の数だけ絵文字ができる)
926:デフォルトの名無しさん
25/07/06 19:24:09.13 jyZjYPic0.net
>>899
2.7までは文字列とユニコード文字列があった
確かu"unicode"的な記法で(おぼろげ)
3にメジャーアップデートして文字列はユニコのみになった
927:デフォルトの名無しさん
25/07/06 20:24:06.04 fLXWuAJ/0.net
Qiitaの『[入門] C/C++ 知っておくべきポインタの由来 ISO標準のメモリモデル徹底解説』
この記事のおかしいとこ適切に指摘できる程度の知識ある人がなんか言うべき。
928:デフォルトの名無しさん
25/07/06 20:42:05.76 +cQ8VLBs0.net
最初にコメントした人も言ってる通り、内容を精査せずにポストしてる AI 生成記事のようであり、
細部のコメントを受けての修正も根本的なところ(そもそもサンプルコードを含む記事の大部分が
provenance と関係ない)を放置して指摘点だけをどうにか直すにとどまっていて、
これもおそらく AI にやらせていそうで、真面目に付き合う気にならない。
929:デフォルトの名無しさん
25/07/06 21:06:32.37 WJe1asKY0.net
最初のコメントの方がずれたこと言ってると思ったわ
930:デフォルトの名無しさん
25/07/06 23:42:52.85 Zx51jGf/0.net
>>901
となると単純化する方向で斬り捨て、
2.7まではascii+utf-16だったかもだが3でutf-32に一本化、の可能性が高いか
リファレンス実装(速度よりも正確性重視)だからこれが正しい選択かもね
>>902
読む気もないが、866の通り、Qiitaではゴミは大量生産される物だと割り切り、
「悪い記事」ではなく「良い記事」を探す事に徹するべきだと思うよ
無限に生産される「ゴミ」に対して「有識者」の時間を要求するのは悪だと思うし(=ただの時間泥棒)
931:デフォルトの名無しさん
25/07/06 23:58:42.87 qwZeW1Ya0.net
>>898
ひらがなとカタカナ、あとはトランプのマークとかだよ
932:デフォルトの名無しさん
25/07/07 00:57:35.46 nJ1e9eHr0.net
>>906
はいはい、日本向けはな
933:デフォルトの名無しさん
25/07/07 02:30:49.89 RcHVNtjG0.net
>>907
念のために言っておくと、ISO 8859 はうんこ規格やぞ
934:デフォルトの名無しさん
25/07/07 04:46:06.48 j3T7OhEz0.net
>>902
ついでに言っておくとな、
> この記事のおかしいとこ適切に指摘できる程度の知識ある人がなんか言うべき。
=「ばかなゆとりZのためにゆうしきしゃはどりょくすべき」と言っているのであって、
一体何様のつもりだ?であり、こんな事言える時点で相手に対するHRTの欠片もない。
Qiitaの連中はHRTを「『ぼくに』ひどいこといわないこと」と捉えてるようだが、
正しくは「『相手に』対する」姿勢であって、
相手に対してHRTがあるのなら、わざわざしょうもない事で手間をかけさせる事は恐縮なはずだから、
有識者は、堂々と馬鹿を無視して見殺しにするのが、HRTの趣旨に則ってる。
(現実的に、無限に沸く馬鹿全員に構うのは無理だし)
そもそもQiitaは「正しい情報が発信される」プラットフォームではなくて、
「各々が自由に発信出来る場所」であり、「正しいかどうかは読者の判断に委ねられる」(=民主主義)
だから、
× 間違いを正す努力をする
○ 正しい情報を自己で発信し直して、間違ってる情報を上書きする
○ 何らかのレーティング機構をつくり、正しい情報に辿り着きやすくする
方向で努力すべき場所だと思うよ。
(だから「悪い記事」ではなく「良い記事」を探せ、となるわけでね)
935:デフォルトの名無しさん
25/07/07 08:30:34.74 CtlI/jIL0.net
>>909
レーティングとかやったとしても、正しい記事はそれほどレート上がらず、きち