- 1 名前:デフォルトの名無しさん mailto:sage [2021/12/25(土) 12:11:46.61 ID:xxeaCAplM.net]
- !extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください) C言語の話題のみ取り扱います C++の話題はC++スレへ 質問には最低限の情報(ソース/コンパイラ/OS)を付ける 数行で収まらないソースは以下を適当に使ってURLを晒す https://paiza.io/ https://ideone.com/ codepad.org/ C17 www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf C11 www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf C99 www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf kikakurui.com/x3/X3010-2003-01.html C FAQ 日本語訳 www.kouno.jp/home/c_faq/ JPCERT C コーディングスタンダード https://www.jpcert.or.jp/sc-rules/ ※前スレ C言語なら俺に聞け 157 https://mevius.5ch.net/test/read.cgi/tech/1624846971/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
- 762 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 21:51:15.67 ID:XKwaNEU70.net]
- >>748
どこのスパコン?
- 763 名前:デフォルトの名無しさん [2022/06/15(水) 21:56:54.74 ID:Ltc382Vw0.net]
- Z8スーパーコンピュータ
- 764 名前:デフォルトの名無しさん mailto:sage [2022/06/15(水) 21:58:58.10 ID:XKwaNEU70.net]
- >>749
あれはレジスタはメモリー上に置くって言う設計思想だから
- 765 名前:デフォルトの名無しさん (ワッチョイ 7f36-GGE9) mailto:sage [2022/06/15(水) 22:55:33 ID:mSaBC5As0.net]
- >750
富士通。 実機は見たこと無い。 なんかアメリカに設置されてて、日本の端末(FMVにFreeBSDかなんか入れてた)からtelnetで入って作業してた。 入社1年目だったんでテスト作業員+フリーズした場所の特定と原因予想してた。
- 766 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 07:08:44.59 ID:ilsRfae90.net]
- STM 14,12,12(13)
LR 12,15 GETMAIN RU,LV=72 ST 13,4(,1) ST 1,8(,13) LR 13,1
- 767 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 07:48:03.24 ID:acnLqVz40.net]
- >>753
2000年辺りならベクトルタイプのVPP シリーズの方かな スカラパラレルはUltraSPARCだし
- 768 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 14:04:28.10 ID:6d6damS40.net]
- ① struct _Hoge;
② typedef struct _Hoge Hoge; ③ struct _Hoge { int a; }; ④ typedef struct _Hoge { int a; } Hoge; ↑の①~④はどれが「定義」でどれが「宣言」かよくわからんです typedef の def は define(定義)の def ですが 変数作って値を定義していないので全部宣言ですかね?
- 769 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 14:15:11.58 ID:ilsRfae90.net]
- 原則、重複が許されるのが宣言、許されないのが定義
ただし仮定義のような例外も一部ある
- 770 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 14:18:30.74 ID:6d6damS40.net]
- そうすると①は宣言ですね
- 771 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 14:37:35.99 ID:ilsRfae90.net]
- うむ
- 772 名前:デフォルトの名無しさん (アウアウウー Sa67-iSSN) [2022/06/16(木) 19:53:21 ID:hEUIHdUOa.net]
- コンパイラが単語を覚えるのが宣言
メモリに実態が産まれるのが定義
- 773 名前:デフォルトの名無しさん (ブーイモ MM7f-a+sK) mailto:sage [2022/06/16(木) 20:19:36 ID:2MvWGhryM.net]
- ③書いたところでメモリに実体生まれんだろ
- 774 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 22:26:58.67 ID:6d6damS40.net]
- ③を2回書くとエラーになりますね
この辺は沼でしょうか? 厳密に分けても何かに役立つというものでもないし・・・
- 775 名前:デフォルトの名無しさん mailto:sage [2022/06/16(木) 23:14:06.95 ID:y5qePP6X0.net]
- そういう風に決めたなら仕方がないが
意味的には、定義と宣言って逆な印象を受けます 数学でいうと、 点や直線の定義では実際の描画はまだですが 点や直線の宣言っていうと、その場に描画すると言うイメージ
- 776 名前:はちみつ餃子 mailto:sage [2022/06/16(木) 23:16:16.53 ID:yR1zGyRS0.net]
- 宣言と定義の意味については C99 だと 6.7 に記述がある
> 宣言は、幾つかの識別子の解釈及び属性を指定する。 > 識別子の定義 (definition) とは、宣言のうち次のものをいう。 > ・ オブジェクトに対しては、そのオブジェクトの記憶域を確保する宣言 > ・ 関数に対しては、関数本体を含む宣言 > ・ 列挙定数又は型定義名に対しては、その識別子の (唯一の) 宣言 逆に言えば定義は常に宣言でもある。
- 777 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 05:27:18.60 ID:zopwF6/i0.net]
- 実体が作られるといっても
プログラムイメージにスペースが確保されるとは限らない 静的記憶域期間を持つものはプログラムイメージに作られるが 自動記憶域期間を持つものは実行中に割付と解放が行われるし 構造体のメンバ宣言並びはコンパイラのメモリに作られる これらのいずれも「定義」となる
- 778 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 07:51:59.32 ID:bL392TY50.net]
- >>765
> 構造体のメンバ宣言並びはコンパイラのメモリに作られる それは > コンパイラが単語を覚えるのが宣言 の方じゃね?
- 779 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 08:44:28.03 ID:rAke7YJm0.net]
- なんとなくのイメージ
・宣言 「xxxxって名前の変数(関数)がどっかにあるらしいよ。詳しいことは知らん。」 ・定義 「xxxxの詳細はココに書かれたxxxxxである!これは決定事項である!!」
- 780 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 13:54:11.29 ID:zopwF6/i0.net]
- >>766
struct _Hoge; struct _Hoge; // OK これは _Hoge という識別子がタグ名という定型データとして作られ、 その後、定型データの中の属性フラグが検査されて一致が確認される struct _Hoge; union _Hoge; // NG これは定型データの中の属性フラグが検査され不一致が検出される struct _Hoge; struct _Hoge { int a; }; // OK これは定型データの中のポインタがまずNULLで作られ、 次に、そのポインタでメンバ宣言列という不定型データを指す struct _Hoge { int a; }; struct _Hoge { int a; }; // NG これは既にNULLでなくなったポインタの貼りかえで拒否される 宣言の重複は矛盾の検出のみを行い 定義の重複は不定型データの再作成で拒否される { } は無結合
- 781 名前:デフォルトの名無しさん [2022/06/17(金) 16:09:04.52 ID:G79h5Zera.net]
- >>763
誤訳
- 782 名前:デフォルトの名無しさん [2022/06/17(金) 16:13:44.68 ID:G79h5Zera.net]
- struct _Hoge { int a; };
struct _Hoge { int a; }; // NG この場合でもコンパイル単位が別ファイルだと(ほぼ)問題無い訳で 一致していなければ一致していないなりの結果が産まれる
- 783 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 16:33:58.20 ID:zopwF6/i0.net]
- >>770
(ほぼ)は不要 問題ないというか完全に同じ内容になっていない場合は未定義の動作
- 784 名前:デフォルトの名無しさん mailto:sage [2022/06/17(金) 19:28:59.11 ID:bL392TY50.net]
- >>768
なにを言いたいのかさっぱりわからんw
- 785 名前:デフォルトの名無しさん [2022/06/18(土) 20:10:05.11 ID:cOcEcivya.net]
- ヘッダ include したことないとか
ヘッダに実装描くとか 分割コンパイルしたことないとか そういうアホのにおいがプンプン丸
- 786 名前:デフォルトの名無しさん [2022/06/18(土) 23:11:41.82 ID:eg6b2Ems0.net]
- どこにそんな話出てた…?
- 787 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 15:11:40.00 ID:BalXxnr90.net]
- 定義と宣言の区別に関して
同一翻訳単位の中で 重複が許されるのが宣言 の実例の話やろ
- 788 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 20:05:57.84 ID:3bt1t/j50.net]
- 聞きたいのは内容じゃなくてなぜそんな話をいきなり始めたのか?なんだけどw
- 789 名前:デフォルトの名無しさん [2022/06/20(月) 20:11:30.62 ID:8GsqMDfwr.net]
- ヘッダに実装書いたっていうレスもヘッダをincludeしたことないっていうレスも見当たらないけど…
- 790 名前:デフォルトの名無しさん [2022/06/20(月) 20:27:07.42 ID:aPzFu0cfd.net]
- 別ソースから同じヘッダをincludeしていてもコンパイル時には必ず別ファイルとなるわけで(ほぼ)じゃ困る
- 791 名前:デフォルトの名無しさん (ワッチョイ ffad-DcGD) [2022/06/25(土) 17:14:53 ID:g21tYZQo0.net]
- if ( a == 0 )
{ port &= 0b11011111 ; } else { port |= 0b00100000 ; } これ条件文使わずに書けるよね?
- 792 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 17:41:40.76 ID:ZgY7VkDz0.net]
- >>779
三項演算子は条件文に含みますか?
- 793 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 17:45:19.17 ID:zMWMLrlCM.net]
- 書けるかどうかより、分かりやすいかの方が大事
- 794 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 17:45:51.43 ID:9jpr7vFN0.net]
- port = port & ~((a == 0) * ~0b11011111) | (a != 0) * 0b00100000
頭悪いんでこれ以上無理。確実にレビューで落ちる
- 795 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 17:56:58.31 ID:9jpr7vFN0.net]
- 何だこれでいいのか
port = port & 0b11011111 | (a != 0) << 5
- 796 名前:デフォルトの名無しさん [2022/06/25(土) 18:15:30.63 ID:g21tYZQo0.net]
- おまいらは何で素直にかけないんだ?(´・ω・`)?
- 797 名前:デフォルトの名無しさん [2022/06/25(土) 18:26:40.73 ID:XIyeaAEpr.net]
- >>779
条件分を使わない理由はないよね?
- 798 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 18:26:54.17 ID:9jpr7vFN0.net]
- まさか質問者に駄目だしされるとは思わなんだ
- 799 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 18:28:36.26 ID:gQjoPRQF0.net]
- 条件によって8ビット目以上も変える訳ではないのならば…かな
&= 0b11011111 | !!a << 5や&= ~0b00100000 | !!a << 5とかも論理否定は楽な方で 後者は若干レジスタ雑に出来るが…しかし最適化するとif文も分岐排除されてほぼ変わらん
- 800 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 19:15:33.07 ID:ca1tbhpBH.net]
- 条件文使わずに書いても何もメリットない
- 801 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 19:35:30.93 ID:IvS/BJ7o0.net]
- やるならアセンブラレベルで・・・
- 802 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 22:45:43.97 ID:UWoTCBGr0.net]
- Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86
0b 使えないw
- 803 名前:デフォルトの名無しさん mailto:sage [2022/06/25(土) 23:52:02.49 ID:PITDVbGU0.net]
- そりゃそうだろ
C言語としてはGCCの拡張だし C++14でコンパイルしたらいけるんじゃね?
- 804 名前:デフォルトの名無しさん (ワッチョイ 8f10-tCSL) mailto:sage [2022/06/26(日) 09:58:04 ID:EKr6eQfX0.net]
- >0b 使えない
0xに変換か、どうせ定数なんだからそれっぽいマクロで代用しとけばヨロシ。
- 805 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 10:58:18.13 ID:hEbl3kj1a.net]
- orをandで記述する方法は
- 806 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 11:05:33.04 ID:j/Qk9Cw40.net]
- 負論理
- 807 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 11:39:10.83 ID:ImrLxjwid.net]
- A|B == ~( ~A & ~B )
だけどまったく意味はないな
- 808 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 11:50:57.28 ID:9tvF1jx30.net]
- ソースを難解にする
- 809 名前:フに多少貢献 []
- [ここ壊れてます]
- 810 名前:デフォルトの名無しさん mailto:sage [2022/06/26(日) 14:00:18.84 ID:r2JBCRM90.net]
- 怒(プイプイ)モルカーだな
- 811 名前:デフォルトの名無しさん (ワッチョイ fdbb-/dRU) mailto:sage [2022/07/09(土) 06:20:44 ID:LJ5BAcPW0.net]
- 今日の学び
voidは1バイト
- 812 名前:デフォルトの名無しさん (ワッチョイ 355f-UQ1h) mailto:sage [2022/07/09(土) 11:11:08 ID:8isXQv7m0.net]
- >>798 たぶんgcc拡張のポインタ演算の話でしょ。他ではそんなこと言えないから気を付けて。
- 813 名前:デフォルトの名無しさん (ワッチョイ fdbb-/dRU) mailto:sage [2022/07/09(土) 12:16:19 ID:LJ5BAcPW0.net]
- >>799
GCCだけど printf("%d\n", sizeof(void)); // 1 になる。 これGCCだけなん?
- 814 名前:デフォルトの名無しさん (スッップ Sd43-jz6z) mailto:sage [2022/07/09(土) 12:23:26 ID:U9EmutCWd.net]
- https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Pointer-Arith.html
- 815 名前:デフォルトの名無しさん (ワッチョイ fdbb-/dRU) mailto:sage [2022/07/09(土) 12:27:53 ID:LJ5BAcPW0.net]
- >>801
へ~知らなかった
- 816 名前:デフォルトの名無しさん (ワッチョイ cb63-TkQT) mailto:sage [2022/07/09(土) 12:31:03 ID:Pcby8BG30.net]
- ではvoid型変数 sを宣言してみて下さい
サイズを測ってご覧にいれます
- 817 名前:デフォルトの名無しさん (ブーイモ MMcb-bSlT) mailto:sage [2022/07/09(土) 12:37:25 ID:rCvRfQZvM.net]
- 糞坊主が
- 818 名前:デフォルトの名無しさん (ワッチョイ 8302-Fj9x) mailto:sage [2022/07/09(土) 12:39:57 ID:OQU8CgWM0.net]
- 屏風に描いたvoidなんつって
- 819 名前:デフォルトの名無しさん (ワッチョイ 23ad-jVDF) mailto:sage [2022/07/09(土) 20:15:12 ID:A5P06KhI0.net]
- ヘ_ヘ
ミ・・ ミ ( )~
- 820 名前:デフォルトの名無しさん mailto:sage [2022/07/09(土) 20:56:46.61 ID:2FL2bpN80.net]
- 他人のふんどしで勝負する男の人って‥‥
- 821 名前:デフォルトの名無しさん mailto:sage [2022/07/09(土) 21:10:00.31 ID:eJjSZ+Lo0.net]
- はなししとは?
ヘ_ヘ ミ・・ ミ ( )~
- 822 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 01:02:53.42 ID:NKXzP1tS0.net]
- このスレに50代の者が居ると見た
- 823 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 01:43:41.30 ID:4ppCSg1ba.net]
- 70までおるじゃろ
- 824 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 05:01:57.35 ID:teKb0H7o0.net]
- ム板の寄合所かよ
- 825 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 15:27:56.20 ID:EpSIEDJ/H.net]
- >>808
他人のふんどしで勝負する男の人って‥‥
- 826 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 15:35:59.80 ID:IXzc/cv30.net]
- みっともねえよな
そんなことまでパクリしかできねえやつ # 奴が来なくなって20年近く経ってんのに進歩してやがらねえ
- 827 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 15:38:00.79 ID:pOdXKR0zH.net]
- >>813
ですよね
- 828 名前:デフォルトの名無しさん mailto:sage [2022/07/11(月) 08:40:13.85 ID:2XjvtJRn0.net]
- voidの長さはよくわからんが、取り敢えずvoid*のインクリ幅を実装の最小単位に取っておけば何でも指せるし、そのアドレス演算に意味を持たせる事も可能になる
どうしてもvoidのサイズを決めたいというのなら、まあ合理的な実装だと思う
- 829 名前:デフォルトの名無しさん mailto:sage [2022/07/11(月) 13:22:34.96 ID:cGEUsgsp0.net]
- void*のインクリ幅に何か意味があるの?
- 830 名前:デフォルトの名無しさん (ワッチョイ e369-TkQT) mailto:sage [2022/07/11(月) 17:20:33 ID:lWPgqJ6O0.net]
- char*でいいじゃん
なんだかわからないものは「バイト列」だろ
- 831 名前:デフォルトの名無しさん (ワッチョイ 7510-TkQT) mailto:sage [2022/07/11(月) 17:41:30 ID:TkfF8Lfy0.net]
- 警告されるから
- 832 名前:デフォルトの名無しさん (ワッチョイ cb63-TkQT) mailto:sage [2022/07/11(月) 17:44:52 ID:rBy2qCXb0.net]
- 普通は明示的キャストを介して使うよな
- 833 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1b3e-TkQT) mailto:sage [2022/07/11(月) 17:46:10 ID:POJvWuxZ0.net]
- そう。
オブジェクトを指すポインタは void* との間で「暗黙に」変換することが出来る。 最終的に char* にキャストするのだとしてもインターフェイス (仮引数) が void* だとキャストをせずに済む。 memmove とかがそれ。
- 834 名前:デフォルトの名無しさん mailto:sage [2022/07/11(月) 22:57:06.26 ID:7aXqGp3Qd.net]
- なんでも指せるのとインクリメント幅を1にするのは関係ない
むしろインクリメントしようとしたらミスである可能性が高いのでワーニングかエラーにすべき
- 835 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 07:13:33.37 ID:MjEzd7ZRd.net]
- ハード的な最小単位へのポインタは欲しいね
charって書くの本当は気持ち悪い
- 836 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1b3e-TkQT) mailto:sage [2022/07/12(火) 10:12:07 ID:AnYAkaOT0.net]
- C の仕様上はアドレスを定義できる単位をバイトと呼び、 char は 1 バイトであると定義されてる。
つまり char はハードウェア的な最小単位と言えるが……、まあ名前が良くないのは確か。
- 837 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 12:14:37.21 ID:MjEzd7ZRd.net]
- つーか符号がどうたら言われたくない
- 838 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 17:26:10.54 ID:DhrJi4Do0.net]
- (char が 7bit の系って生き残ってるのかしら?)
- 839 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 17:42:00.57 ID:4CshQ+Jw0.net]
- というかなんでcharってsignedにしてあるんだろ?
char と unsigned charじゃなくてchar と signed char にしてくれていればよかったのにと思わなくもない intもsignedだし(逆にintがunsignedだったら使いづらいけど)符号付の計算が基本とかあるのかね?
- 840 名前:デフォルトの名無しさん (ワッチョイ a5d2-WFmy) [2022/07/12(火) 17:58:33 ID:YvrX4qJi0.net]
- C++ではcharが符号付きか符号なしかは環境依存だよ
unsigned charともsigned charとも別の型扱いされる不思議な子 たぶんC言語でも同じ扱いだろう
- 841 名前:デフォルトの名無しさん (ラクッペペ MMcb-KYPL) mailto:sage [2022/07/12(火) 18:06:57 ID:ydFOrexCM.net]
- charの符号は処理系依存と違ったっけ?
- 842 名前:はちみつ餃子 mailto:sage [2022/07/12(火) 18:30:46.85 ID:AnYAkaOT0.net]
- そう。 >>827 の説明が正しい。
char の符号は処理系定義かつ signed char とも unsigned char とも異なる独立した型。 signed char か unsigned char のどちらかと別名という可能性もないので、 C++ のオーバーロードや C の _Generic で三種類に分岐することは出来るよ。 char は整数だから他の整数型との一貫性で考えれば符号付きになるのが自然なようにも思えるが……、 実行基本文字集合は char で (char が符号有りだとしても) 正の値になることを 要求している (C99 だと 6.2.5 に書いてある) ので各環境が採用している文字コードによっては 符号無しにせざるを得なかったのだと思う。 EBCDIC とかだとどうしてもそうなる。 まあ負の文字コードが有っても辻褄合わせは出来たとは思うんだが、 仕様が成立した時点でそうでない想定をしているコードが結構あったりしたんじゃないかな。
- 843 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 18:31:52.31 ID:xJzxH9jqa.net]
- >>825
規格では8bit以上だったはず www.bohyoh.com/CandCPP/FAQ/FAQ00013.html
- 844 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 11:20:33.14 ID:Zw91A11j0.net]
- >>829
>まあ負の文字コードが有っても辻褄合わせは出来たとは思うんだが、 比較の際に暗黙で走る int への格上げの時にややこしくなりそうやね char ch; ... if (ch >= 0x80) // 上位ビット立ってる?
- 845 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 11:53:33.59 ID:CCByLcFJM.net]
- &buf[0] ってbufと同じだよな?
なんか意味あんのこの書き方?
- 846 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 12:43:05.67 ID:hH7ZnQ+pM.net]
- &buf[0] 配列の先頭要素のアドレス
buf 配列の先頭のアドレス 同じ sizeof(&buf[0]) 配列の先頭要素のサイズ sizeof(buf) 配列のサイズ 異なる 配列の要素数を求める場合 sizeof(buf)/sizeof(&buf[0]) で頻出する
- 847 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 12:44:54.67 ID:WjRfIVOeM.net]
- センキュー
- 848 名前:蟻人間 mailto:sage [2022/07/13(水) 12:52:57.77 ID:H8j4+v2od.net]
- >>833
>配列の要素数を求める場合 >sizeof(buf)/sizeof(&buf[0]) >で頻出する ダウト。sizeof(buf)/sizeof(buf[0])の間違い。
- 849 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a33e-TkQT) mailto:sage [2022/07/13(水) 14:23:32 ID:Kb1eM8RI0.net]
- >>832
配列の先頭としての意味よりその要素に意味があるということを強調した雰囲気を表すためにそういう書き方をすることはあるよ。 仕様としての解釈 (動作) に差が無い場面であっても人が読む上では雰囲気の差はある。
- 850 名前:デフォルトの名無しさん mailto:sage [2022/07/13(水) 16:51:43.98 ID:Zw91A11j0.net]
- 添え字が非0 のとき &buf[1] か buf+1
添え字が0 のとき &buf[1] か buf+0 か buf か 同じコードになるけど記述に意味を見出すかどうか
- 851 名前:デフォルトの名無しさん [2022/07/13(水) 17:38:26.38 ID:H0DndFW/a.net]
- _countof使わないのか
- 852 名前:はちみつ餃子 mailto:sage [2022/07/14(木) 13:40:03.36 ID:m4fVu3Vb0.net]
- 配列の大きさを知る演算子くらい標準入りしてもよさそうなもんだとは思う。
- 853 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 13:46:25.72 ID:YnALXIBFd.net]
- ポインタに使うアフォが出てくるに1ペリカ
- 854 名前:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a33e-TkQT) mailto:sage [2022/07/14(木) 14:14:28 ID:m4fVu3Vb0.net]
- むしろ、イディオムやマクロによる素朴な実装だとポインタを渡してもエラーなく通過してしまうからこそ
言語の機能として提供して然るべきだと思うよ。
- 855 名前:デフォルトの名無しさん (アウアウウー Sa09-S3zt) mailto:sage [2022/07/14(木) 14:49:53 ID:abQKMdR+a.net]
- 結局、配列が無いのが問題、みたいな
- 856 名前:デフォルトの名無しさん (ワッチョイ cb63-TkQT) mailto:sage [2022/07/14(木) 15:26:18 ID:fgF/JGu/0.net]
- 配列とは別に文字列型作れば良かったのかな
- 857 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 19:30:20.65 ID:r8EwCLZ2d.net]
- それを言ったら破門だよ
- 858 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 22:46:23.97 ID:vZ8IDyva0.net]
- string_t *s = str_alloc();
- 859 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 00:26:30.17 ID:1DBmbCgq0.net]
- char a[32];
char b[32]; fp = fopen("abc.csv", "r"); for(; fscanf(fp,"%[^,],%s%s", a, b) != EOF; ){ printf("%s %s\n", a, b); } fclose(fp);
- 860 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 00:28:02.51 ID:1DBmbCgq0.net]
- test.c:23:31: warning: format ‘%s’ expects a matching ‘char *’ argument [-Wformat=]
for(; fscanf(fp,"%[^,],%s%s", a, b) != EOF; ){ ^^ 問題なく動くんですが、上のような警告が出ます。 気にしなくても良いですか?
- 861 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 01:16:21.70 ID:RIt+yucva.net]
- &a[0]にでもしたらいいかもな
警告出さなきゃ出ないんじゃなかったかな
- 862 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 04:38:20.42 ID:tV/KWY8I0.net]
- 指定子の数と引数の数が合ってないのでは?
|

|