22/05/28 11:23:05.30 81XaDMLN0.net
typedef struct X {
struct X *hage;
char a[0];
} X;
これはokだが
typedef struct X {
X *hage;
char a[0];
} X;
これはだめやろ
568:デフォルトの名無しさん (アウアウウー Sac5-MppQ)
22/05/28 13:26:19 CfHVy9pGa.net
よくてもよさそうだけどなあ
569:はちみつ餃子
22/05/28 15:18:56.42 IqCM7SI40.net
C++ ではアリだが、それはそれとして配列の大きさは 0 は駄目だよ。
570:デフォルトの名無しさん
22/05/28 18:03:45.61 2wkU6YYXa.net
配列要素0個はgccの拡張やね、標準規格に取り込んで欲しいわ
571:デフォルトの名無しさん
22/05/28 18:11:56.00 I3uIL+k90.net
いっそのこと要素数指定無しの配列も認めて欲しい
572:デフォルトの名無しさん
22/05/28 18:22:29.20 GsM4WAAy0.net
>>562
それはポインタと何が違うのん?
もしかして自動reallocとか?
573:ハノン
22/05/28 18:26:01.93 HcUv+NxjH.net
>>560-561
C99 ではすでに取り入れられた可変長構造体ですが、C++ ではまだなんですかね?
URLリンク(www.kouno.jp)
574:デフォルトの名無しさん (ワッチョイ d901-2OYr)
22/05/28 18:53:41 6Sv+ENTH0.net
NFTゲームでのユーザー活動が20倍増加 DappRadarレポート
分散型アプリデータ企業DappRadarは20日、Blockchain Game Alliance(BGA)と共同で、
ブロックチェーンゲームについてのレポートを発表。2022年第1四半期(1-3月期)は、
前年同期と比べて、ユーザーの活動が2,000%増加したという。その他、様々な角度
からデータを報告した。
ブロックチェーン/NFTゲームへの第1四半期の投資総額は、約3,200億円(25億ドル)に
到達した。レポートは、もしこのペースが維持されれば、2022年全体の投資額は約1.3兆
円(100億ドル)に達する可能性もあると予測している。なお、2021年の年間投資総額は
約5,100億円(40億ドル)であった。
レポートによると、22年1Qの全ブロックチェーンアクティビティのうち、分散型ゲームアプリ
ケーションによるものが半分以上(52%)を占めていたという。ゲームをプレイすることで
お金を稼ぐことが出来る「Play-to-Earn(P2E)」のゲームもこれを牽引している。
575:デフォルトの名無しさん
22/05/28 19:27:23.65 72vE6z5l0.net
>>564
VLAはC++ではいらない子
576:デフォルトの名無しさん
22/05/28 20:00:35.42 VWmT0B4pa.net
>>564
だからそこで[1]を指定しないとならないのがダメダメって話
namestr[100]を確保するコード書いてみ
577:デフォルトの名無しさん
22/05/28 20:00:39.40 TcgqTRp90.net
>>565
NFTはゲームに絡んでいる部分だけは面白そう
578:デフォルトの名無しさん
22/05/28 20:13:20.50 q7Q7UvgS0.net
struct Header {
int total_size;
char naemestr[1];
};
本質的には int total_size + naemestr可変としたいが
sizeof(struct Header) は char naemestr[1]; を含むのでキモいことになる
579:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 133e-yO3c)
22/05/28 20:21:20 IqCM7SI40.net
>>567 >>569
二個以上のメンバからなる構造体である場合に最後の要素は不完全型であることが許される。
つまり char a[]; と書く分には OK だし、 sizoef で構造体の大きさを調べたときにはこのメンバを抜いた大きさが返ってくる。
だけど、規格を総合的に解釈すると (動的に) 割り当てる大きさが 0 であってはならないと思う。
>>564
C11 以降だと VLA はオプショナルだぞ。
580:ハノン
22/05/28 20:46:38.14 HcUv+NxjH.net
>>566
VLA は可変長配列の話、>>564 は可変長構造体の話、全然違うし可変長構造体は C99 で是認されましたよ
ちょっと遅れているんじゃないですか?
581:ハノン
22/05/28 20:47:26.50 HcUv+NxjH.net
>>567
[1]だろうと[0] だろうとどうでもよくて、問題は可変長構造体がC++では認められているか否かの話なのでは?
582:ハノン
22/05/28 20:48:11.40 HcUv+NxjH.net
>>570
>>571
583:デフォルトの名無しさん
22/05/28 21:12:45.84 CfHVy9pGa.net
動的に変わらんのに可変長っていうの違和感あるわ
584:デフォルトの名無しさん
22/05/28 21:12:59.17 q7Q7UvgS0.net
>>570
最後の要素が 不完全型な some-type [ ] に限り sizeof は そのメンバを含まない大きさを返すけど
some-type [1] の場合にはそのメンバを含んじゃう
URLリンク(ideone.com)
585:はちみつ餃子
22/05/28 21:34:55.35 IqCM7SI40.net
>>575
「よりよい方法があるのであえて 1 を書く必要はないじゃろ」というのが主旨。
586:デフォルトの名無しさん (ワッチョイ 4101-VwMx)
22/05/28 22:06:06 q7Q7UvgS0.net
了解
587:ハノン
22/05/28 22:46:10.65 Fu9mRLk6H.net
>>574
確かに、静的可変長とかいい言葉はありませんかね
でも存在自体は昔から知られていましたよ URLリンク(www.kouno.jp)
588:デフォルトの名無しさん
22/05/29 00:52:18.99 TsbfhcxCd.net
まあキモいけどサイズが実際より大きすぎるぶんには問題は起きない
589:デフォルトの名無しさん
22/05/29 01:10:06.53 9R680m3FH.net
>>579
キモい?アセンブラでは普通にやりますよ‥‥
590:デフォルトの名無しさん
22/05/29 01:18:23.26 J7SFw8MM0.net
そうだね、アセンブラを使えば良い
591:デフォルトの名無しさん (ワッチョイ 9379-3jko)
22/05/29 02:00:28 MBI5r2Hn0.net
最後が可変の構造体はchar naemestr[1]; なんて定義せずに
#definne Header_getNaemestr(p) (char *)((struct Header*)(p) + 1)
みたいに書く方法もあるよ
592:デフォルトの名無しさん (ワッチョイ abae-11kL)
22/05/29 05:45:19 7E0AvYTo0.net
>>571
配列と構造体を間違えたのは悪かったが
なんで遅れてるって話になるんだ?
593:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 133e-yO3c)
22/05/29 08:46:06 +aZOCBrD0.net
C++ の提案としては出てる。
URLリンク(www.open-std.org)
今のところ C++ に取り入れられる見込みはない模様。
C で実績があるわけだし、変な矛盾はないと思うんだが
仕様として整合性をとるのは別の大変さがあるんかね?
594:デフォルトの名無しさん
22/05/29 12:15:20.33 IcJAaUL30.net
ビットマップのカラーテーブル部
データフォーマットの中間部分に鎮座してる可変
595:デフォルトの名無しさん
22/05/29 12:46:49.46 vh7xwuy0a.net
データ部の位置が変なリンクリスト嫌いだわ
596:デフォルトの名無しさん (ワッチョイ 2b63-yO3c)
22/05/29 12:59:38 J7SFw8MM0.net
XEvent にはとてもお世話になりました
今は使う機会が無くなりましたが
597:デフォルトの名無しさん (ブーイモ MM4b-/szq)
22/05/29 13:00:08 lS+LcIfWM.net
リンクリストでlist_head使ってないってこと?
598:デフォルトの名無しさん
22/05/29 13:33:49.79 9R680m3FH.net
>>583
遅れてるからですよ、C89 から話題になっていたことを理解していないからそんな間違いをするのです‥‥
599:デフォルトの名無しさん
22/05/31 11:53:16.64 B+MkXCVE0.net
>>589
C89から話題って何のことだ?
理解してるかどうかどうやって確認したんだ?
ああ、しどろもどろってやつかw
600:デフォルトの名無しさん
22/06/01 11:41:44.19 +HI81M8pd.net
>>546
そういえば愛用のtccはストリームからも読み込めるけど
まあ全部内部バッファに溜めればワンパスに見えるし、結局のところはわからんぬ
すくなくとも論理的に2パスする必要のある言語仕様的は思い浮かばない
601:デフォルトの名無しさん
22/06/01 16:22:13.14 UJNXiTT3d.net
プリプロセッサで一度マクロ
602:展開してからコンパイラに渡してるから2パスと言えなくもない
603:ハノン
22/06/01 21:59:27.44 8/80xBhO0.net
>>592
プリプロはパスに勘定しません
pascal こそ最高の正義、でも pascal 以降、おしなべてすべての言語は堕落してしまいましたね‥‥
604:デフォルトの名無しさん (ワッチョイ 09ad-dhW+)
22/06/01 23:11:11 vvQTEkHX0.net
pascalってキラーアプリとかあったっけ
605:デフォルトの名無しさん (ワッチョイ 2b63-yO3c)
22/06/01 23:13:36 f45OwcOU0.net
Janeなんたらは有名かもだが、他は知らない
606:デフォルトの名無しさん
22/06/02 05:56:20.78 mFaN5Fu80.net
Cはpascalへのアンチテーゼでもある
607:デフォルトの名無しさん
22/06/02 06:19:33.58 My4Fa6/ja.net
>>594
TeX
608:デフォルトの名無しさん
22/06/02 18:56:01.53 5oSm2G9pd.net
>>593
アセンブラ以外のすべての言語は退廃と怠惰の産物と心得よ
609:デフォルトの名無しさん
22/06/02 19:27:29.17 M0/peWx+0.net
怠惰は美徳なり
610:デフォルトの名無しさん
22/06/02 20:43:06.06 9S2EfN690.net
プログラマー三大美徳
怠惰、短気、傲慢
611:デフォルトの名無しさん
22/06/03 06:04:19.89 2JsQlaOH0.net
傲慢か
既存のコード無視して上書き的なメンテするやつか?
612:デフォルトの名無しさん (ワッチョイ abae-11kL)
22/06/03 06:39:00 2JsQlaOH0.net
>>598
コーディングシート使って機械語を直打ちしてた俺に言わせると
アセンブラも贅沢品だぞ
613:デフォルトの名無しさん (ワッチョイ 5110-yO3c)
22/06/03 07:54:41 nRSHAlo70.net
DOS時代にコプロセッサとか言うのあったけど、実際に使われてたの?
解説書を見ること無くWin時代に入っちゃって。
614:デフォルトの名無しさん
22/06/03 08:05:52.15 4GI8EAsla.net
FPUはあるとないで全然違ったよ
615:デフォルトの名無しさん
22/06/03 08:08:00.81 AsLopwGrM.net
今でもARMのFPUとかいろいろ使われてるよ
616:はちみつ餃子
22/06/03 09:38:08.46 ysQR9TY90.net
>>592
Tiny C Compiler はプリプロセスも含めてワンパスで処理するよ。
処理が各段階に分離されてないのでコンパイラのソースコードが読みづらいらしい。
617:はちみつ餃子
22/06/03 10:19:43.88 ysQR9TY90.net
GPU もある種のコプロセッサと言えなくもない。 そういう分類の仕方はあまりしないが……。
618:デフォルトの名無しさん
22/06/03 13:47:50.04 jxOrvhuY0.net
当時、コプロセッサを「子プロセッサ」だと思ってたのを思い出す。
619:デフォルトの名無しさん
22/06/03 19:52:40.79 tmTTQ0Rod.net
>>603
486から標準でCPUに組み込まれて
今では自動的に使われていることになる
620:デフォルトの名無しさん
22/06/03 19:59:24.89 jmq+XGTN0.net
PentiumのFPUバグ…
621:デフォルトの名無しさん
22/06/03 20:14:45.52 sSA68QUoa.net
487とは
622:デフォルトの名無しさん
22/06/03 20:48:03.52 LlSBEtTM0.net
かつてのARMはFPUどころかMMU、Cacheまでコプロ命令で制御してたな。
623:デフォルトの名無しさん
22/06/03 20:53:33.97 /AcAT3MUa.net
>>611
487は468SX(486DXの浮動小数点ユニット無し版)用のコプロやね
実態は486DXで装着すると468SXを乗っ取って全部487で実行しちゃうからCo-って感じじゃないけど
624:デフォルトの名無しさん
22/06/05 02:34:40.58 YsWbAm+I0.net
『コプロ』なるLSIを追加すると、掛け算を割り算が使えるようになる。
8~16ビット全盛時代、その文句の意味が分からなかったなあ。
BASICで普通に四則演算していたから。
625:デフォルトの名無しさん (ワッチョイ c6ae-+66E)
22/06/05 05:54:10 7J0TRviH0.net
コプロラグニー
626:デフォルトの名無しさん
22/06/05 06:54:01.45 pIMmlsGTd.net
>>614
何もかも間違ってるw
627:デフォルトの名無しさん
22/06/05 07:36:26.69 AvwHMxMpa.net
>>614
未だに分かってないな
628:デフォルトの名無しさん
22/06/05 07:41:32.89 7J0TRviH0.net
CPUが電卓を使うというのが何ともミステリアスだった
629:デフォルトの名無しさん
22/06/06 16:32:55.98 qbvku5vVd.net
**が理解できない
教えてくだちい
630:デフォルトの名無しさん
22/06/06 21:07:32.00 1f/zEEFPd.net
ポインタのポインタ?
631:デフォルトの名無しさん
22/06/06 21:24:19.81 7xDnzGS8M.net
間接参照の間接参照だろ
経験豊富なら余裕で見分けられる
632:デフォルトの名無しさん
22/06/06 21:37:13.48 v7exk6pA0.net
ポインタは記法が悪いよ
関数ポインタはもっと悪い
633:デフォルトの名無しさん
22/06/06 22:15:21.61 uQ+SySK50.net
宣言のときの * と、指し先の実体を求める *
634:デフォルトの名無しさん
22/06/06 23:45:42.93 9jLV7J2l0.net
a***b
635:デフォルトの名無しさん
22/06/08 02:10:57.84 KYIfcmSY0.net
c=a/*b;
636:デフォルトの名無しさん
22/06/08 07:54:23.07 CNk0rgMY0.net
int a=1;
int *b=&a;
int **c=&b;
int d=0;
d=**c; /* d == a */
637:619
22/06/08 08:41:18.56 NWnFU//jd.net
少しわかった気がします
試してみて理解します
皆さんありがとうございます
638:デフォルトの名無しさん
22/06/08 16:31:44.77 KT22GtKja.net
関数のポインタとか
関数のポインタを引数に持つ関数のポインタとか
639:デフォルトの名無しさん
22/06/08 17:05:53.27 V/Z/RpWDF.net
typedefすればいい
typedef int AAA_FUNC( int, char *, ...);
int AAA_caller( int, AAA_FUNC*);
640:デフォルトの名無しさん
22/06/09 11:32:24.20 ZhHr/cTg0.net
>**
なんで char **argv が思い浮かばなかったかなぁ・・・。
641:デフォルトの名無しさん
22/06/09 13:06:08.29 0WQEetb00.net
char *argv[]という初心者をいたぶる陰険な罠を避けたかったんじゃね?
642:デフォルトの名無しさん
22/06/09 15:57:22.96 lMNj+E1f0.net
GNU MakeよりCMakeが優れてるのはどの辺でしょうか?
643:はちみつ餃子
22/06/09 16:49:53.93 k8dtcEck0.net
>>632
CMake はメタビルドツールなので make と比較するようなものではない。
CMake を使う多くの場合で make も使う。
644:デフォルトの名無しさん
22/06/09 17:00:06.87 lMNj+E1f0.net
>>633
そうなんですね。ありがとうございます
645:デフォルトの名無しさん
22/06/10 11:33:59.29 rZTjX0hE0.net
宣言/デリファレンスの記法が悪いというより、=が悪い
両辺を等値(あるいはそうする=代入)というセマンティクスと解離してる
646:デフォルトの名無しさん
22/06/10 11:41:37.01 rZTjX0hE0.net
初期化の=は左辺ではなく、左辺で宣言されるものを指してるわけで、頭の中で=以外の記号に置き換えて読むといいかも
647:デフォルトの名無しさん
22/06/10 13:18:43.35 PT4Yy0z80.net
=と==は、はっきり区別されてるだろ
連動して常に等しいという規則ならマクロでやればいいし
648:デフォルトの名無しさん
22/06/10 13:19:17.11 HL4tZsFs0.net
A=1
B=2
C=3
A=B=C
PRINT A,B,C
649:デフォルトの名無しさん
22/06/10 16:02:05.50 5CLHXu7x0.net
>>638
BとCが等しいかの比較結果が A に入る
650:デフォルトの名無しさん
22/06/10 22:32:37.38 ExBywScCd.net
C言語ではA=B=C;でAとBにCの値が入るはずだが
651:デフォルトの名無しさん (オッペケ Sr87-vhci)
22/06/11 02:33:23 yqb/24klr.net
Cの比較は==だからね
652:デフォルトの名無しさん (ワッチョイ cfae-/e9c)
22/06/11 04:29:30 3J9oG0Sq0.net
BASICだろ
653:デフォルトの名無しさん
22/06/11 08:08:56.72 5lUjqa1id.net
なんのスレ
654:デフォルトの名無しさん
22/06/11 08:27:12.87 TYekU7UkM.net
C
A=1, B=1, C=1
BASIC
A=-1, B=1, C=1
655:デフォルトの名無しさん
22/06/11 15:01:54.40 s3NqXqGx0.net
ちょー初心者
引数付きの関数で引数が空のときにも意味を持たせたい
nanntoka(char adress)なんて関数で
呼び出し側がnantoka()と書いたときも意味を持たせる場合どうすりゃいいの?
null判定でいいんですか?
656:はちみつ餃子
22/06/11 15:07:25.17 D3tfzU/30.net
>>645
C では出来ない。
657:デフォルトの名無しさん
22/06/11 15:15:18.40 s3NqXqGx0.net
だよねー
やっぱ数値は工夫のしようがないから無理なのかー
やー助かりました
658:デフォルトの名無しさん
22/06/11 15:45:32.03 NTE9LoY80.net
C++なら出来るんだっけ。
659:デフォルトの名無しさん
22/06/11 15:48:15.36 nZnmEekY0.net
C++にはデフォルト引数があるし
オーバーロードもできる
Cでできるかは知らん
int f(const char*s = nullptr);
660:デフォルトの名無しさん
22/06/11 16:27:10.38 dptRvNRm0.net
普通にはできないからやるな
(1) printfみたいにやる方法
(2) __VA_ARGS__でやる方法
があるぞい
661:デフォルトの名無しさん
22/06/11 17:10:24.92 t7XDMYlk0.net
>>650
printfみたいな可変引数でも第一引数は必要なので純粋に引数なしってのはできなかったはず。
662:デフォルトの名無しさん
22/06/11 17:22:53.63 lqPwOW/ya.net
_Genericとかみんな使う?
663:デフォルトの名無しさん
22/06/11 17:28:25.28 YjAHf+RK0.net
printf(NULL);
悪魔の召喚
664:デフォルトの名無しさん
22/06/12 05:58:21.10 rhQkMiRe0.net
>>651
できるぞ
第一引数なしで可変引数にするときは
void func();
と、省略記号なしで宣言する
ただし言うまでもないが
func();
で呼び出したときの第一引数は不定なので
使い途はない
665:デフォルトの名無しさん
22/06/12 07:27:33.25 Tbig4rXQd.net
プロトタイプ省略すればなんでもできるw
666:デフォルトの名無しさん
22/06/12 08:41:18.11 LzXoNMHn0.net
>>654
> nanntoka(char adress)なんて関数で
って書いてあるのに...
667:デフォルトの名無しさん
22/06/12 15:51:07.84 rhQkMiRe0.net
>>656
> 呼び出し側がnantoka()
とも書いてあるだろ
何が言いたい?
668:はちみつ餃子
22/06/12 16:04:25.30 7muDz8Uq0.net
>>654
> 第一引数は不定なので
いいえ。 未定義動作です。
669:デフォルトの名無しさん
22/06/12 16:07:16.41 LzXoNMHn0.net
>>657
勝手に端折るなよ、 書いてあるのは
> 呼び出し側がnantoka()と書いたときも意味を持たせる場合どうすりゃいいの?
で、答えはできない
つまり
>>654 > できるぞ
がアホだってことな
670:デフォルトの名無しさん
22/06/12 16:17:07.73 2T6Ast9Ed.net
>>654
>第一引数なしで可変引数にするときは
可変引数になってないね
全然意味のない書き込みだね…
671:デフォルトの名無しさん
22/06/13 06:48:01.95 BOW2YZM80.net
>>658
不定の値にアクセスしたら未定義の動作だね
何が言いたい?
>>659
幼児レベルの罵倒語が必要か?
654は正しいのか誤っているのかどっちだ?
>>660
では聞くが可変引数って何だ?
JIS X3010にそんな用語はないが
672:デフォルトの名無しさん
22/06/13 08:40:16.72 si/cekt2d.net
int func(void); と
int func(...); に対する言及なしで
int func(); だけ出てきてるからまともな議論じゃないと思ってスルーしてたが
可変引数は >>651 で出てきてそれに合わせてるだけじゃねーの?
673:デフォルトの名無しさん (スップ Sd1f-asUV)
22/06/13 08:54:28 si/cekt2d.net
int func(void); だとそもそも引数なししか受け付けない。
int func(...); だと引数の型と個数を実装側が期待するものにしなければならない。間違えたら未定義動作。
int func(); だと引数の型がわからないまま関数を使う。間違えてたら未定義動作。
int func(...); の第1引数は普通は型を明示するから
int func(const char*, ...); のようになるが。
674:はちみつ餃子
22/06/13 09:33:56.73 zy+KupId0.net
>>661
いいえ。 一致しない引数で関数を呼出そうとすることが未定義です。
675:デフォルトの名無しさん
22/06/13 10:21:00.47 BOW2YZM80.net
>>664
一致しないって何と何が?
funcについて仮引数は宣言されていない
よって実引数との型の比較行われず
一致にも不一致にもあたらないぞ
676:はちみつ餃子
22/06/13 10:32:48.37 zy+KupId0.net
>>665
いいえ。 どこかに関数定義は存在し、関数定義 (の仮引数) とその関数呼出し (の実引数)
との矛盾 (引数の数があわない・型が適合しない) は許されていません。
677:デフォルトの名無しさん
22/06/13 11:04:47.60 YiPaBYDZr.net
可変長引数では無理なのね
>>650の(2)の実装だとどうなるの
678:はちみつ餃子
22/06/13 11:30:06.51 zy+KupId0.net
マクロでコンパウンドリテラルを作ってから (その個数と共に) 渡すという方法が取れると思う。
受け取る関数の型は >>645 の通りではできないけど。
#include <stdio.h>
#define foo(...) bar(sizeof((char[]){0, __VA_ARGS__}), (char[]){0, __VA_ARGS__})
void bar(int n, char* args) {
if(n==1) {
printf("no argment.\n");
} else {
printf("argment is %c.\n", args[1]);
}
}
int main(void) {
foo('a');
foo();
}
679:デフォルトの名無しさん
22/06/13 11:35:06.46 BOW2YZM80.net
>>666
話が噛み合っていないな
引数の数も型も比べる相手がいないのに矛盾しようがない
そもそも関数原型を用意しましょうなんていうのはCにおいて後付けの推奨事項に過ぎない
既存のコードを否定するのは影響が大きすぎるからな
680:デフォルトの名無しさん
22/06/13 11:47:54.04 ir4nxYTVd.net
>>661
自分で「可変引数にするときは」と言っておいて
なにが「そんな用語はない」だよ
頭おかしい
681:デフォルトの名無しさん
22/06/13 11:48:35.71 cwJzo4Jp0.net
fn(void)
fn(int)
こういう2種類の引数を許容したとして
呼ばれた側はどう区別したら良いんだろう
コンパイル時に、別関数にアサインしたらいいのかな
その場合は受け取る関数も二つ用意してやらないと行けないな
682:デフォルトの名無しさん
22/06/13 11:52:40.59 ir4nxYTVd.net
区別はできない
引数を見ようとしたら結果は不定になる
単なるバグだよ
683:デフォルトの名無しさん
22/06/13 12:04:59.49 63W4P7Hh0.net
(2)の想定はこれだった
URLリンク(wandbox.org)
これも引数0個のときは##__VA_ARGS__か__VA_OPT__が必要で
まずかったな
684:デフォルトの名無しさん
22/06/13 12:13:41.38 Bgq8kBxf0.net
>>669 関数定義とその呼び出しを比較するって書かれてるのに、きみが無視するから噛み合わないんだよ。
685:デフォルトの名無しさん
22/06/13 12:16:16.46 BOW2YZM80.net
>>674
void func() { } /* 定義 */
int main()
{
func(); /* 呼び出し */
}
どこが矛盾なんだ?
# 迂闊な答えをすると罠があるから気をつけな
686:デフォルトの名無しさん
22/06/13 12:18:15.22 BOW2YZM80.net
>>670
その時点ではアバウトな言葉遣いが容認される流れだったが
厳密さを求める流れにあんたが変えたんだよ
687:デフォルトの名無しさん
22/06/13 12:27:06.91 Bgq8kBxf0.net
>>675 その例だけなら矛盾しないね。でも引数渡せないから>645のやりたかったことはできないよね。
688:デフォルトの名無しさん
22/06/13 15:54:04.85 BOW2YZM80.net
>>677
引数が空のときにに意味を持たせるんだったな
void func() { puts("no arguments are given"); }
int main()
{
func();
}
# さっき言った「罠」がまだここにある
689:デフォルトの名無しさん
22/06/13 16:19:19.10 Bgq8kBxf0.net
まともに話す気なさそうだし、もういいや。
C言語では>>645に書かれてるようなことはできなくて、
>>654の「第一引数は不定」はどうせ未定義動作の間違い、
という点に異論が無ければ、これ以上語ることもない。
690:デフォルトの名無しさん
22/06/13 16:34:27.02 cwJzo4Jp0.net
nantoka()と呼び出した場合、
呼び出された関数は、
nanntoka(char adress)として
スタック上からadressを取り出そうとするが
ここにある値はNULLではなく、不定値(所謂ゴミ)
NULL判定で回避はできない
691:デフォルトの名無しさん
22/06/13 16:37:54.51 ir4nxYTVd.net
>>678
Once again, once again, you're on your own
Who's to blame? who's to blame? it's such a shame
No-one ever hears your name, or plays your game
692:デフォルトの名無しさん
22/06/13 18:45:35.75 +5MOS3Faa.net
>>680
> スタック上からadressを取り出そうとするが
だからそれを実行するかどうかもわからんって話
未定義動作ってそういうもんだ
693:デフォルトの名無しさん
22/06/13 18:53:43.72 HsopZ7m+d.net
グローバル変数 int exists_adress; を介してやれば引数あり/なし のモードを未定義動作を回避しつつ設定できそう
実用性など皆無だが
694:デフォルトの名無しさん
22/06/13 19:17:35.58 ir4nxYTVd.net
>>682
読み出すまではできるだろ
戻りアドレスか関係ないレジスタの退避値が入っている
問題はここではエラーにならず次にこの値で何かしようとしたらクラッシュする可能性が高い
これは単にコンパイラを騙して原因がわかりにくいエラーを出す方法なだけ
全くなんの意味もない
695:デフォルトの名無しさん
22/06/13 19:21:03.88 cwJzo4Jp0.net
分からないなら、試して見れば良いのに
696:デフォルトの名無しさん
22/06/13 19:40:41.59 +5MOS3Faa.net
>>684
だからコンパイラは読み出すコードを吐く義務はない
未定義動作とわかった時点で呼び出しすらしないコードを吐く可能性もある
未定義動作ってそういうもんだ
697:デフォルトの名無しさん
22/06/13 19:46:28.66 cwJzo4Jp0.net
読み出さなければ、実行時エラーにならないだろう
なんで、なるの?
698:デフォルトの名無しさん
22/06/13 19:48:48.04 cwJzo4Jp0.net
呼ばれた側の関数は、adressに入っている(はずの)値を使うんだぜ
コード吐かなければ、それこそコンパイラのバグになるぞ
699:デフォルトの名無しさん
22/06/13 19:52:23.50 cwJzo4Jp0.net
実際に呼び出すコードは、呼ばれた側の関数に実装されるが、
呼び出し側の引数セットありと、引数セット無しで、
違うコードが実行されたりするのか?
700:デフォルトの名無しさん
22/06/13 20:03:29.40 Q7R38T3J0.net
何が起こっても不思議ではない未定義派と、コンパイラ実装は実質こうなってる派で話が噛み合うはずがないと思うの。
701:デフォルトの名無しさん
22/06/13 20:05:01.34 cwJzo4Jp0.net
信仰と言うより、勘違いだろう
恥ずかしくて後に引けなくなった感じ
702:デフォルトの名無しさん
22/06/13 20:09:56.04 cwJzo4Jp0.net
引数セットするのは、呼び出し側
コンパイラが呼び出し側で引数がないと判定した結果、
気を利かせて呼び出さないコードを吐くって一体どういうことだろう
呼ばれた側は機械的にあるはずの引数にアクセスする
呼ばれる側はセットしてないなんて分からないからアクセスしてしまうぞ
703:デフォルトの名無しさん
22/06/13 20:10:29.53 8KDu5nutr.net
>「罠」がある(キリッ
とかお寒いこと書いちゃうくらいだしよほど視野が狭くなってたんだろうなぁ
704:デフォルトの名無しさん
22/06/13 20:15:33.10 iGSNe98na.net
stdcall と cdecl の話か?
どっちにしても引数省略されたのかされてないのか呼ばれた方では判らん
C++なら省略の代わりにデフォルト引数入れたりマングリングしたり出来るが
Cではどうしようもない
705:デフォルトの名無しさん
22/06/13 20:17:50.97 6K7aQgyCM.net
>>693
コピペで使えそうだなw
706:デフォルトの名無しさん
22/06/13 21:42:41.32 PLcvpN2h0.net
>>688-689,691-692
コンパイルエラーとして全くコードを吐かないという事すら可能なのに何を言ってるんだよ...
今時未定義動作すら考慮して最適化したりしてる時代なんだぞw
URLリンク(qiita.com)
707:デフォルトの名無しさん
22/06/13 21:44:17.84 ir4nxYTVd.net
>>686
何か勘違いしてないか
コンパイラが未定義動作とわかったらエラーか最低でもワーニングを出す
コンパイラにはわからないからバグになるんだよ
708:デフォルトの名無しさん
22/06/13 22:00:44.23 cwJzo4Jp0.net
ワーニング笑
709:デフォルトの名無しさん
22/06/13 22:05:19.85 cwJzo4Jp0.net
一体どこのコンパイラがコード吐かずに停止するんだよ
710:デフォルトの名無しさん
22/06/13 22:14:04.47 PLcvpN2h0.net
>>697
> コンパイラが未定義動作とわかったらエラーか最低でもワーニングを出す
そんな義務はない
> コンパイラにはわからないからバグになるんだよ
同一翻訳単位ならわかるだろ
勘違いしてるのは君、と言うか君の知識が浅すぎるだけ
>>699
存在するかどうかは関係なく規格上はそう言う処理系でも規格準拠という話
711:デフォルトの名無しさん
22/06/13 22:42:16.41 cwJzo4Jp0.net
つまり実在しないコンパイラってことだな
712:デフォルトの名無しさん
22/06/13 22:44:07.87 cwJzo4Jp0.net
オレ以外、全員狂ってるって言ってるのと同じ
713:デフォルトの名無しさん
22/06/13 22:44:55.56 cwJzo4Jp0.net
こいつと同じ職場でなくて良かった
714:デフォルトの名無しさん
22/06/13 23:54:32.34 uF/nHRZy0.net
法解釈論「人殺しは違法であり罰される」
実運用論「証拠を完璧に隠滅できれば罰されない」
意固地になっちゃってるから何言っても無駄
715:デフォルトの名無しさん
22/06/14 03:02:34.64 bOBoFDUrM.net
意固地になるとアスペチックになるのか
アスペチックだから意固地になりやすいのか
716:デフォルトの名無しさん (ワッチョイ ff01-MmlY)
22/06/14 06:01:33 WigeF4Tr0.net
意固地もなにも未定義動作なんて規格の話なんだから実運用論とか言われてもねw
717:デフォルトの名無しさん
22/06/14 06:16:24.48 XpDhKBGs0.net
>>679
第一引数が不定とは、第一引数を何らかの方法で取り出した場合の話だが
おまえさん、その方法はどんな方法を想定しているんだ?
718:デフォルトの名無しさん
22/06/14 07:36:21.84 /Eif446V0.net
自分で言った言葉に?みつく芸なんだろうか
719:デフォルトの名無しさん
22/06/14 10:22:14.90 2fucKJss0.net
>>707
>654が言ってるのはどうせこんなのだろうと思ってた。
URLリンク(wandbox.org)
#include <stdio.h>
void func();
int main() { func(); }
void func(int x) { printf("%d\n", x); }
720:デフォルトの名無しさん
22/06/14 10:32:47.66 rBU/2bdp0.net
実体記述時と、宣言&呼び出し時とで、引数の型や個数の不一致
コンパイルが通るかもしれんけど、どう動くかわからないし
俺の環境ではこう動くからと、それを信じて採用するには怖すぎる
721:デフォルトの名無しさん
22/06/14 10:33:48.55 XpDhKBGs0.net
>>709
654は俺でまあそんなとこだが
俺は今679に聞いている
おそらく「654と同じ」とかなんとか言って
自分の手の内は隠したまま人の批判をするんだろうけどな
722:デフォルトの名無しさん
22/06/14 10:44:32.74 2fucKJss0.net
>>711 え? 679 (ワッチョイ 835f-GGE9) だから答えたのに何でよくわからんイチャモンつけられてんの?
いやまぁ、予想通りで結論に異論無いならいいんだけどさ。
723:デフォルトの名無しさん
22/06/14 10:50:39.67 rBU/2bdp0.net
省略時のデフォルト引数と(マングリング等による)別実装
C以前の言語でもありそうだし前者は検討してそうなもんだけど見送ったなりの理由があるんだろうか
724:デフォルトの名無しさん
22/06/14 10:52:59.20 2fucKJss0.net
想定が合ってたということで改めて結論も明記しとくと、
>709 のプログラムが未定義動作を起こすのは不定な x の値を使用するからではなく、
func(int x) に対して引数の数が不正な関数呼び出し func() を行うからであって、
x の値を使用しない場合(例えば関数内を空にした場合など)ても未定義動作になる、という話ね。
725:デフォルトの名無しさん
22/06/14 10:53:17.30 XpDhKBGs0.net
>>712
ほらな、やっぱり自分の手の内は晒さない
726:デフォルトの名無しさん
22/06/14 11:13:15.99 rBU/2bdp0.net
661の立場だと
void func(int x) { }
・・・・・
func();
は、記述のほうで x をリファレンスしてないからセーフで未定義には該当しないと読めるが
そいう主張なのかな
727:デフォルトの名無しさん
22/06/14 11:51:03.61 2oEiwFQbr.net
引っ込みつかなくなると大変だね
728:デフォルトの名無しさん
22/06/14 12:19:58.97 zr4Ezotf0.net
単に使われない変数があるってだけだと思うが
729:デフォルトの名無しさん
22/06/14 12:58:48.08 WigeF4Tr0.net
>>718
>>717ww
730:デフォルトの名無しさん
22/06/14 13:36:14.16 rBU/2bdp0.net
実装の話
関数側でスタックに詰まれた引数をクリーンアップする呼び出し規約(pascalcall や stdcall) だと
明後日に飛んでいくのか
731:デフォルトの名無しさん
22/06/14 19:11:20.40 DieH08Hx0.net
引き数の値で関数内の処理を分けるか普通に関数分ければいいやん
732:デフォルトの名無しさん
22/06/14 21:11:51.49 VPcVb+UNM.net
普通の人ならそうするが、
普通で無い方法が無いかを
いろいろ議論している
暇つぶしとも言う
733:デフォルトの名無しさん
22/06/14 21:17:41.30 XpDhKBGs0.net
特定されない限りあらゆるケースを想定するからな
734:デフォルトの名無しさん
22/06/14 23:50:32.80 dnqAP5Hg0.net
>>718
DLLの呼び出しみたいに呼び出し先の実装をコンパイラが知らない場合
例えば引数をスタックに積む呼び出し規約だと
↓正常な動作
1)戻り先のアドレスをスタックに積む
2)引数をスタックに積む
3)DLL側のコード実行時にpopしてスタックから引数ゲット
4)いろいろ処理してpopして戻り先アドレスをゲットしてりたーん
これが↓異常な動作
1)戻り先のアドレスをスタックに積む
2)なんもない
3)DLL側のコード実行時にpopしてスタックから引数ゲット
4)いろいろ処理してpopして戻り先アドレスをゲットしてりたーん
5)わし、迷子
ってなるんちゃうん?
引数がレジスタ渡しなら、ただ変な数値受け取るだけで済むけど、今ここでの話じゃ限定してないようだし
735:デフォルトの名無しさん
22/06/15 00:28:34.16 kIvvyTdz0.net
呼び出しって引数をスタックに積んでから、呼び出すんじゃなかったかな
736:デフォルトの名無しさん
22/06/15 00:38:49.11 3+VQJWvy0.net
>>725
そうだよ
だから func(int);な関数をfunc(void); で呼び出したらスタックにずれが生じる可能性がある
737:デフォルトの名無しさん
22/06/15 00:43:20.78 kIvvyTdz0.net
引数をスタックに積んでから、戻りアドレスを積んでCallするなら、
func関数はスタック先頭位置にあるアドレスに戻るだけではないかな
積まれている引数はその下だからズレないと思う
738:デフォルトの名無しさん
22/06/15 00:57:26.32 3+VQJWvy0.net
>>727
>引数をスタックに積んでから、戻りアドレスを積んでCallするなら、
逆だぞ
戻りアドレスをスタックに積んでから引数をスタックに積む、その状態でfuncをコールする
そうしないと、次のpopでは戻りアドレスを受け取ることになり、引数を受け取れない
コールされ
739:たfuncはpopし引数を受け取って処理(この間にスタックへのpush/popがあったりして)、最後にpopして戻りアドレスを受け取って呼び出し元に帰る
740:デフォルトの名無しさん
22/06/15 01:08:25.20 kIvvyTdz0.net
戻りアドレスをスタックに積むのは、機械語のCALL命令が行うんでしょう?
741:デフォルトの名無しさん
22/06/15 01:16:07.05 kIvvyTdz0.net
VCでアセンブラソース出力させてみました
int main()
{
call(1);
call();
return 0;
}
int call()
{
return 0;
}
742:デフォルトの名無しさん
22/06/15 01:17:50.09 kIvvyTdz0.net
_main PROC
; Line 2
push ebp
mov ebp, esp
; Line 3
push 1
call _call
add esp, 4
; Line 4
call _call
; Line 5
xor eax, eax
; Line 6
pop ebp
ret 0
_main ENDP
743:デフォルトの名無しさん
22/06/15 01:18:18.33 kIvvyTdz0.net
_call PROC
; Line 8
push ebp
mov ebp, esp
; Line 9
xor eax, eax
; Line 10
pop ebp
ret 0
_call ENDP
744:デフォルトの名無しさん
22/06/15 01:22:13.35 3+VQJWvy0.net
そうでした
うんこは消えます
745:デフォルトの名無しさん
22/06/15 05:01:22.73 oeHjaPLHa.net
フレームポインタってのもあって
まあなんでもいいんです
746:デフォルトの名無しさん
22/06/15 15:38:51.27 IEWflW3Ga.net
>>728
馬鹿発見
747:デフォルトの名無しさん
22/06/15 18:22:38.94 mSaBC5As0.net
>729
全てのCPUにCALL相当の命令があるとは限らないってことを頭の片隅に。
748:デフォルトの名無しさん
22/06/15 19:14:29.02 kIvvyTdz0.net
CALL命令のないCPUにCってどういう風に実装するのかな
キッと神様のような人だろうと思う
749:デフォルトの名無しさん
22/06/15 19:34:49.70 vqdnmmaIa.net
最近call見ないよね
命令はあるけど
750:デフォルトの名無しさん
22/06/15 19:53:29.20 XKwaNEU7
751:0.net
752:デフォルトの名無しさん
22/06/15 19:55:51.69 XKwaNEU70.net
>>737
汎用機みたいにスタックが無いマシンだとソフトでスタック作るとかする
753:デフォルトの名無しさん
22/06/15 20:05:59.02 kIvvyTdz0.net
呼出も戻りも、ジャンプ命令で実装するんかい?
「食らえ、GOTO攻撃!」
754:デフォルトの名無しさん
22/06/15 20:06:30.10 gppE9X5h0.net
>>737
厳密じゃないけど、
push pc
jmp xxxx
:
pop pc
みたいな。push pcする時にjmpのアドレスの次を
755:デフォルトの名無しさん
22/06/15 20:07:41.69 gppE9X5h0.net
途中で書き込んてしまった。
>>737
厳密じゃないけど、
push pc
jmp xxxx
:
pop pc
みたいな。push pcする時にjmpの次のアドレスをpushする必要があるけど。
756:デフォルトの名無しさん
22/06/15 20:29:16.05 mSaBC5As0.net
>739
2000年あたりのスパコンのデバッグやってたけどスタックポインタ自体無かったよ。
汎用レジスタの一つをスタックポインタの様に使ってた。
スパコンのPEはCPUじゃ無いっていうならそれまでだけど。
OSがCで書かれてたよ。
757:はちみつ餃子
22/06/15 20:38:36.75 VY0KZJ3n0.net
専用のレジスタを用意するかわりにアドレシングモードを充実させてるタイプの CPU もあるとは聞いたことは有る。
複数のスタックを用途別に使ったりする運用も出来るので便利っぽいよ。
758:デフォルトの名無しさん
22/06/15 20:42:40.26 Z7kfo4VR0.net
リンクレジスタを使うアーキテクチャは
呼び出しも戻りもジャンブだよ
759:デフォルトの名無しさん
22/06/15 21:27:21.82 XKwaNEU70.net
>>744
だから>>740に書いたように汎用機みたいにハードウェアスタックが無いプロセッサーは普通にあるよ
でもBASみたいにサブルーチンを呼び出す命令はある(戻りアドレスをレジスタに格納してジャンプする)
スパコンの命令セットは見たことないけど似たような命令はあると思う
760:デフォルトの名無しさん
22/06/15 21:32:09.09 mSaBC5As0.net
JMPで呼び出した関数に飛んで、
JMPで呼び出し元に戻って行ってたよ。
RET、それ相当の命令が無かった(使われてなかった?)。
761:デフォルトの名無しさん
22/06/15 21:47:48.01 vqdnmmaIa.net
ぴゅう太のCPUとか全然レジスタなかった
762:デフォルトの名無しさん
22/06/15 21:51:15.67 XKwaNEU70.net
>>748
どこのスパコン?
763:デフォルトの名無しさん
22/06/15 21:56:54.74 Ltc382Vw0.net
Z8スーパーコンピュータ
764:デフォルトの名無しさん
22/06/15 21:58:58.10 XKwaNEU70.net
>>749
あれはレジスタはメモリー上に置くって言う設計思想だから
765:デフォルトの名無しさん (ワッチョイ 7f36-GGE9)
22/06/15 22:55:33 mSaBC5As0.net
>750
富士通。
実機は見たこと無い。
なんかアメリカに設置されてて、日本の端末(FMVにFreeBSDかなんか入れてた)からtelnetで入って作業してた。
入社1年目だったんでテスト作業員+フリーズした場所の特定と原因予想してた。
766:デフォルトの名無しさん
22/06/16 07:08:44.59 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:デフォルトの名無しさん
22/06/16 07:48:03.24 acnLqVz40.net
>>753
2000年辺りならベクトルタイプのVPP シリーズの方かな
スカラパラレルはUltraSPARCだし
768:デフォルトの名無しさん
22/06/16 14:04:28.10 6d6damS40.net
① struct _Hoge;
② typedef struct _Hoge Hoge;
③ struct _Hoge { int a; };
④ typedef struct _Hoge { int a; } Hoge;
↑の①~④はどれが「定義」でどれが「宣言」かよくわからんです
typedef の def は define(定義)の def ですが
変数作って値を定義していないので全部宣言ですかね?
769:デフォルトの名無しさん
22/06/16 14:15:11.58 ilsRfae90.net
原則、重複が許されるのが宣言、許されないのが定義
ただし仮定義のような例外も一部ある
770:デフォルトの名無しさん
22/06/16 14:18:30.74 6d6damS40.net
そうすると①は宣言ですね
771:デフォルトの名無しさん
22/06/16 14:37:35.99 ilsRfae90.net
うむ
772:デフォルトの名無しさん (アウアウウー Sa67-iSSN)
22/06/16 19:53:21 hEUIHdUOa.net
コンパイラが単語を覚えるのが宣言
メモリに実態が産まれるのが定義
773:デフォルトの名無しさん (ブーイモ MM7f-a+sK)
22/06/16 20:19:36 2MvWGhryM.net
③書いたところでメモリに実体生まれんだろ
774:デフォルトの名無しさん
22/06/16 22:26:58.67 6d6damS40.net
③を2回書くとエラーになりますね
この辺は沼でしょうか?
厳密に分けても何かに役立つというものでもないし・・・
775:デフォルトの名無しさん
22/06/16 23:14:06.95 y5qePP6X0.net
そういう風に決めたなら仕方がないが
意味的には、定義と宣言って逆な印象を受けます
数学でいうと、
点や直線の定義では実際の描画はまだですが
点や直線の宣言っていうと、その場に描画すると言うイメージ
776:はちみつ餃子
22/06/16 23:16:16.53 yR1zGyRS0.net
宣言と定義の意味については C99 だと 6.7 に記述がある
> 宣言は、幾つかの識別子の解釈及び属性を指定する。
> 識別子の定義 (definition) とは、宣言のうち次のものをいう。
> ・ オブジェクトに対しては、そのオブジェクトの記憶域を確保する宣言
> ・ 関数に対しては、関数本体を含む宣言
> ・ 列挙定数又は型定義名に対しては、その識別子の (唯一の) 宣言
逆に言えば定義は常に宣言でもある。
777:デフォルトの名無しさん
22/06/17 05:27:18.60 zopwF6/i0.net
実体が作られるといっても
プログラムイメージにスペースが確保されるとは限らない
静的記憶域期間を持つものはプログラムイメージに作られるが
自動記憶域期間を持つものは実行中に割付と解放が行われるし
構造体のメンバ宣言並びはコンパイラのメモリに作られる
これらのいずれも「定義」となる
778:デフォルトの名無しさん
22/06/17 07:51:59.32 bL392TY50.net
>>765
> 構造体のメンバ宣言並びはコンパイラのメモリに作られる
それは
> コンパイラが単語を覚えるのが宣言
の方じゃね?
779:デフォルトの名無しさん
22/06/17 08:44:28.03 rAke7YJm0.net
なんとなくのイメージ
・宣言
「xxxxって名前の変数(関数)がどっかにあるらしいよ。詳しいことは知らん。」
・定義
「xxxxの詳細はココに書かれたxxxxxである!これは決定事項である!!」
780:デフォルトの名無しさん
22/06/17 13:54:11.29 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:デフォルトの名無しさん
22/06/17 16:09:04.52 G79h5Zera.net
>>763
誤訳
782:デフォルトの名無しさん
22/06/17 16:13:44.68 G79h5Zera.net
struct _Hoge { int a; };
struct _Hoge { int a; }; // NG
この場合でもコンパイル単位が別ファイルだと(ほぼ)問題無い訳で
一致していなければ一致していないなりの結果が産まれる
783:デフォルトの名無しさん
22/06/17 16:33:58.20 zopwF6/i0.net
>>770
(ほぼ)は不要
問題ないというか完全に同じ内容になっていない場合は未定義の動作
784:デフォルトの名無しさん
22/06/17 19:28:59.11 bL392TY50.net
>>768
なにを言いたいのかさっぱりわからんw
785:デフォルトの名無しさん
22/06/18 20:10:05.11 cOcEcivya.net
ヘッダ include したことないとか
ヘッダに実装描くとか
分割コンパイルしたことないとか
そういうアホのにおいがプンプン丸
786:デフォルトの名無しさん
22/06/18 23:11:41.82 eg6b2Ems0.net
どこにそんな話出てた…?
787:デフォルトの名無しさん
22/06/20 15:11:40.00 BalXxnr90.net
定義と宣言の区別に関して
同一翻訳単位の中で 重複が許されるのが宣言 の実例の話やろ
788:デフォルトの名無しさん
22/06/20 20:05:57.84 3bt1t/j50.net
聞きたいのは内容じゃなくてなぜそんな話をいきなり始めたのか?なんだけどw
789:デフォルトの名無しさん
22/06/20 20:11:30.62 8GsqMDfwr.net
ヘッダに実装書いたっていうレスもヘッダをincludeしたことないっていうレスも見当たらないけど…
790:デフォルトの名無しさん
22/06/20 20:27:07.42 aPzFu0cfd.net
別ソースから同じヘッダをincludeしていてもコンパイル時には必ず別ファイルとなるわけで(ほぼ)じゃ困る
791:デフォルトの名無しさん (ワッチョイ ffad-DcGD)
22/06/25 17:14:53 g21tYZQo0.net
if ( a == 0 )
{ port &= 0b11011111 ;
}
else
{ port |= 0b00100000 ;
}
これ条件文使わずに書けるよね?
792:デフォルトの名無しさん
22/06/25 17:41:40.76 ZgY7VkDz0.net
>>779
三項演算子は条件文に含みますか?
793:デフォルトの名無しさん
22/06/25 17:45:19.17 zMWMLrlCM.net
書けるかどうかより、分かりやすいかの方が大事
794:デフォルトの名無しさん
22/06/25 17:45:51.43 9jpr7vFN0.net
port = port & ~((a == 0) * ~0b11011111) | (a != 0) * 0b00100000
頭悪いんでこれ以上無理。確実にレビューで落ちる
795:デフォルトの名無しさん
22/06/25 17:56:58.31 9jpr7vFN0.net
何だこれでいいのか
port = port & 0b11011111 | (a != 0) << 5
796:デフォルトの名無しさん
22/06/25 18:15:30.63 g21tYZQo0.net
おまいらは何で素直にかけないんだ?(´・ω・`)?
797:デフォルトの名無しさん
22/06/25 18:26:40.73 XIyeaAEpr.net
>>779
条件分を使わない理由はないよね?
798:デフォルトの名無しさん
22/06/25 18:26:54.17 9jpr7vFN0.net
まさか質問者に駄目だしされるとは思わなんだ
799:デフォルトの名無しさん
22/06/25 18:28:36.26 gQjoPRQF0.net
条件によって8ビット目以上も変える訳ではないのならば…かな
&= 0b11011111 | !!a << 5や&= ~0b00100000 | !!a << 5とかも論理否定は楽な方で
後者は若干レジスタ雑に出来るが…しかし最適化するとif文も分岐排除されてほぼ変わらん
800:デフォルトの名無しさん
22/06/25 19:15:33.07 ca1tbhpBH.net
条件文使わずに書いても何もメリットない
801:デフォルトの名無しさん
22/06/25 19:35:30.93 IvS/BJ7o0.net
やるならアセンブラレベルで・・・
802:デフォルトの名無しさん
22/06/25 22:45:43.97 UWoTCBGr0.net
Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86
0b 使えないw
803:デフォルトの名無しさん
22/06/25 23:52:02.49 PITDVbGU0.net
そりゃそうだろ
C言語としてはGCCの拡張だし
C++14でコンパイルしたらいけるんじゃね?
804:デフォルトの名無しさん (ワッチョイ 8f10-tCSL)
22/06/26 09:58:04 EKr6eQfX0.net
>0b 使えない
0xに変換か、どうせ定数なんだからそれっぽいマクロで代用しとけばヨロシ。
805:デフォルトの名無しさん
22/06/26 10:58:18.13 hEbl3kj1a.net
orをandで記述する方法は
806:デフォルトの名無しさん
22/06/26 11:05:33.04 j/Qk9Cw40.net
負論理
807:デフォルトの名無しさん
22/06/26 11:39:10.83 ImrLxjwid.net
A|B == ~( ~A & ~B )
だけどまったく意味はないな
808:デフォルトの名無しさん
22/06/26 11:50:57.28 9tvF1jx30.net
ソースを難解にする�
809:フに多少貢献
810:デフォルトの名無しさん
22/06/26 14:00:18.84 r2JBCRM90.net
怒(プイプイ)モルカーだな
811:デフォルトの名無しさん (ワッチョイ fdbb-/dRU)
22/07/09 06:20:44 LJ5BAcPW0.net
今日の学び
voidは1バイト
812:デフォルトの名無しさん (ワッチョイ 355f-UQ1h)
22/07/09 11:11:08 8isXQv7m0.net
>>798 たぶんgcc拡張のポインタ演算の話でしょ。他ではそんなこと言えないから気を付けて。
813:デフォルトの名無しさん (ワッチョイ fdbb-/dRU)
22/07/09 12:16:19 LJ5BAcPW0.net
>>799
GCCだけど
printf("%d\n", sizeof(void)); // 1
になる。
これGCCだけなん?
814:デフォルトの名無しさん (スッップ Sd43-jz6z)
22/07/09 12:23:26 U9EmutCWd.net
URLリンク(gcc.gnu.org)
815:デフォルトの名無しさん (ワッチョイ fdbb-/dRU)
22/07/09 12:27:53 LJ5BAcPW0.net
>>801
へ~知らなかった
816:デフォルトの名無しさん (ワッチョイ cb63-TkQT)
22/07/09 12:31:03 Pcby8BG30.net
ではvoid型変数 sを宣言してみて下さい
サイズを測ってご覧にいれます
817:デフォルトの名無しさん (ブーイモ MMcb-bSlT)
22/07/09 12:37:25 rCvRfQZvM.net
糞坊主が
818:デフォルトの名無しさん (ワッチョイ 8302-Fj9x)
22/07/09 12:39:57 OQU8CgWM0.net
屏風に描いたvoidなんつって
819:デフォルトの名無しさん (ワッチョイ 23ad-jVDF)
22/07/09 20:15:12 A5P06KhI0.net
ヘ_ヘ
ミ・・ ミ
( )~
820:デフォルトの名無しさん
22/07/09 20:56:46.61 2FL2bpN80.net
他人のふんどしで勝負する男の人って‥‥
821:デフォルトの名無しさん
22/07/09 21:10:00.31 eJjSZ+Lo0.net
はなししとは?
ヘ_ヘ
ミ・・ ミ
( )~
822:デフォルトの名無しさん
22/07/10 01:02:53.42 NKXzP1tS0.net
このスレに50代の者が居ると見た
823:デフォルトの名無しさん
22/07/10 01:43:41.30 4ppCSg1ba.net
70までおるじゃろ
824:デフォルトの名無しさん
22/07/10 05:01:57.35 teKb0H7o0.net
ム板の寄合所かよ
825:デフォルトの名無しさん
22/07/10 15:27:56.20 EpSIEDJ/H.net
>>808
他人のふんどしで勝負する男の人って‥‥
826:デフォルトの名無しさん
22/07/10 15:35:59.80 IXzc/cv30.net
みっともねえよな
そんなことまでパクリしかできねえやつ
# 奴が来なくなって20年近く経ってんのに進歩してやがらねえ
827:デフォルトの名無しさん
22/07/10 15:38:00.79 pOdXKR0zH.net
>>813
ですよね
828:デフォルトの名無しさん
22/07/11 08:40:13.85 2XjvtJRn0.net
voidの長さはよくわからんが、取り敢えずvoid*のインクリ幅を実装の最小単位に取っておけば何でも指せるし、そのアドレス演算に意味を持たせる事も可能になる
どうしてもvoidのサイズを決めたいというのなら、まあ合理的な実装だと思う
829:デフォルトの名無しさん
22/07/11 13:22:34.96 cGEUsgsp0.net
void*のインクリ幅に何か意味があるの?
830:デフォルトの名無しさん (ワッチョイ e369-TkQT)
22/07/11 17:20:33 lWPgqJ6O0.net
char*でいいじゃん
なんだかわからないものは「バイト列」だろ
831:デフォルトの名無しさん (ワッチョイ 7510-TkQT)
22/07/11 17:41:30 TkfF8Lfy0.net
警告されるから
832:デフォルトの名無しさん (ワッチョイ cb63-TkQT)
22/07/11 17:44:52 rBy2qCXb0.net
普通は明示的キャストを介して使うよな
833:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1b3e-TkQT)
22/07/11 17:46:10 POJvWuxZ0.net
そう。
オブジェクトを指すポインタは void* との間で「暗黙に」変換することが出来る。
最終的に char* にキャストするのだとしてもインターフェイス (仮引数) が void* だとキャストをせずに済む。
memmove とかがそれ。
834:デフォルトの名無しさん
22/07/11 22:57:06.26 7aXqGp3Qd.net
なんでも指せるのとインクリメント幅を1にするのは関係ない
むしろインクリメントしようとしたらミスである可能性が高いのでワーニングかエラーにすべき
835:デフォルトの名無しさん
22/07/12 07:13:33.37 MjEzd7ZRd.net
ハード的な最小単位へのポインタは欲しいね
charって書くの本当は気持ち悪い
836:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1b3e-TkQT)
22/07/12 10:12:07 AnYAkaOT0.net
C の仕様上はアドレスを定義できる単位をバイトと呼び、 char は 1 バイトであると定義されてる。
つまり char はハードウェア的な最小単位と言えるが……、まあ名前が良くないのは確か。
837:デフォルトの名無しさん
22/07/12 12:14:37.21 MjEzd7ZRd.net
つーか符号がどうたら言われたくない
838:デフォルトの名無しさん
22/07/12 17:26:10.54 DhrJi4Do0.net
(char が 7bit の系って生き残ってるのかしら?)
839:デフォルトの名無しさん
22/07/12 17:42:00.57 4CshQ+Jw0.net
というかなんでcharってsignedにしてあるんだろ?
char と unsigned charじゃなくてchar と signed char にしてくれていればよかったのにと思わなくもない
intもsignedだし(逆にintがunsignedだったら使いづらいけど)符号付の計算が基本とかあるのかね?
840:デフォルトの名無しさん (ワッチョイ a5d2-WFmy)
22/07/12 17:58:33 YvrX4qJi0.net
C++ではcharが符号付きか符号なしかは環境依存だよ
unsigned charともsigned charとも別の型扱いされる不思議な子
たぶんC言語でも同じ扱いだろう
841:デフォルトの名無しさん (ラクッペペ MMcb-KYPL)
22/07/12 18:06:57 ydFOrexCM.net
charの符号は処理系依存と違ったっけ?
842:はちみつ餃子
22/07/12 18:30:46.85 AnYAkaOT0.net
そう。 >>827 の説明が正しい。
char の符号は処理系定義かつ signed char とも unsigned char とも異なる独立した型。
signed char か unsigned char のどちらかと別名という可能性もないので、
C++ のオーバーロードや C の _Generic で三種類に分岐することは出来るよ。
char は整数だから他の整数型との一貫性で考えれば符号付きになるのが自然なようにも思えるが……、
実行基本文字集合は char で (char が符号有りだとしても) 正の値になることを
要求している (C99 だと 6.2.5 に書いてある) ので各環境が採用している文字コードによっては
符号無しにせざるを得なかったのだと思う。
EBCDIC とかだとどうしてもそうなる。
まあ負の文字コードが有っても辻褄合わせは出来たとは思うんだが、
仕様が成立した時点でそうでない想定をしているコードが結構あったりしたんじゃないかな。
843:デフォルトの名無しさん
22/07/12 18:31:52.31 xJzxH9jqa.net
>>825
規格では8bit以上だったはず
URLリンク(www.bohyoh.com)
844:デフォルトの名無しさん
22/07/13 11:20:33.14 Zw91A11j0.net
>>829
>まあ負の文字コードが有っても辻褄合わせは出来たとは思うんだが、
比較の際に暗黙で走る int への格上げの時にややこしくなりそうやね
char ch;
...
if (ch >= 0x80) // 上位ビット立ってる?
845:デフォルトの名無しさん
22/07/13 11:53:33.59 CCByLcFJM.net
&buf[0] ってbufと同じだよな?
なんか意味あんのこの書き方?
846:デフォルトの名無しさん
22/07/13 12:43:05.67 hH7ZnQ+pM.net
&buf[0] 配列の先頭要素のアドレス
buf 配列の先頭のアドレス
同じ
sizeof(&buf[0]) 配列の先頭要素のサイズ
sizeof(buf) 配列のサイズ
異なる
配列の要素数を求める場合
sizeof(buf)/sizeof(&buf[0])
で頻出する
847:デフォルトの名無しさん
22/07/13 12:44:54.67 WjRfIVOeM.net
センキュー
848:蟻人間
22/07/13 12:52:57.77 H8j4+v2od.net
>>833
>配列の要素数を求める場合
>sizeof(buf)/sizeof(&buf[0])
>で頻出する
ダウト。sizeof(buf)/sizeof(buf[0])の間違い。
849:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a33e-TkQT)
22/07/13 14:23:32 Kb1eM8RI0.net
>>832
配列の先頭としての意味よりその要素に意味があるということを強調した雰囲気を表すためにそういう書き方をすることはあるよ。
仕様としての解釈 (動作) に差が無い場面であっても人が読む上では雰囲気の差はある。
850:デフォルトの名無しさん
22/07/13 16:51:43.98 Zw91A11j0.net
添え字が非0 のとき &buf[1] か buf+1
添え字が0 のとき &buf[1] か buf+0 か buf か
同じコードになるけど記述に意味を見出すかどうか
851:デフォルトの名無しさん
22/07/13 17:38:26.38 H0DndFW/a.net
_countof使わないのか
852:はちみつ餃子
22/07/14 13:40:03.36 m4fVu3Vb0.net
配列の大きさを知る演算子くらい標準入りしてもよさそうなもんだとは思う。
853:デフォルトの名無しさん
22/07/14 13:46:25.72 YnALXIBFd.net
ポインタに使うアフォが出てくるに1ペリカ
854:はちみつ餃子 ◆8X2XSCHEME (ワッチョイ a33e-TkQT)
22/07/14 14:14:28 m4fVu3Vb0.net
むしろ、イディオムやマクロによる素朴な実装だとポインタを渡してもエラーなく通過してしまうからこそ
言語の機能として提供して然るべきだと思うよ。
855:デフォルトの名無しさん (アウアウウー Sa09-S3zt)
22/07/14 14:49:53 abQKMdR+a.net
結局、配列が無いのが問題、みたいな
856:デフォルトの名無しさん (ワッチョイ cb63-TkQT)
22/07/14 15:26:18 fgF/JGu/0.net
配列とは別に文字列型作れば良かったのかな
857:デフォルトの名無しさん
22/07/15 19:30:20.65 r8EwCLZ2d.net
それを言ったら破門だよ
858:デフォルトの名無しさん
22/07/15 22:46:23.97 vZ8IDyva0.net
string_t *s = str_alloc();
859:デフォルトの名無しさん
22/07/17 00:26:30.17 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:デフォルトの名無しさん
22/07/17 00:28:02.51 1DBmbCgq0.net
test.c:23:31: warning: format ‘%s’ expects a matching ‘char *’ argument [-Wformat=]
for(; fscanf(fp,"%[^,],%s%s", a, b) != EOF; ){
^^
問題なく動くんですが、上のような警告が出ます。
気にしなくても良いですか?
861:デフォルトの名無しさん
22/07/17 01:16:21.70 RIt+yucva.net
&a[0]にでもしたらいいかもな
警告出さなきゃ出ないんじゃなかったかな
862:デフォルトの名無しさん
22/07/17 04:38:20.42 tV/KWY8I0.net
指定子の数と引数の数が合ってないのでは?
863:デフォルトの名無しさん
22/07/17 09:31:19.06 5kV34GW+0.net
%s は1つで良いんじゃね?
864:デフォルトの名無しさん
22/07/17 09:48:19.50 gh7Bz7cid.net
%sが多いね
あと32バイト以上あったらクラッシュするけどいいの
865:デフォルトの名無しさん
22/07/17 11:10:26.64 tV/KWY8I0.net
>>846
そのコードで問題なく動くならabc.csvがかなり特殊な形式だと思う
URLリンク(ideone.com)
866:デフォルトの名無しさん
22/07/17 12:37:05.79 Fwel5trjd.net
最初の%[^,]でa[]にコンマの前までが取られて
次の%sが行末までをb[]に取るから
その次の%sをコピーするポインタが指定されてないので本来はここでクラッシュするけど
前の%sで行末に行ってるのでこの%sは必ず無視されるという綱渡り状態
直しておいたほうがいいよ
867:847 (ワッチョイ 7db3-pN0Z)
22/07/18 00:57:42 i3ini+Eo0.net
サンクス(´・ω・`)
868:デフォルトの名無しさん
22/07/21 23:01:29.27 qNAIu8qZa.net
生徒数と科目数と点数をキーボードから入力し、それぞれの科目数の個人、全体の合計点数、(科目数の個人、全体の)平均点をそれぞれ出すプログラミングをやっているのですが、全く分からないので教えてください。
869:デフォルトの名無しさん
22/07/21 23:24:42.74 25qjJOkGr.net
キーボードから入力する方法がわからないのか、平均点をだす方法がわからないのか?
870:デフォルトの名無しさん
22/07/21 23:58:01.60 tQt8NkV/0.net
多分学校の宿題かなにかなんだろうが、
言葉足らずで相当補わないと問題が分からない
出題されたまんまの内容を書いてみてくれないか
871:デフォルトの名無しさん
22/07/22 01:39:33.12 fX2QhDiX0.net
「全く分からない」に対してわかるように教えるには入門書の頭から説明しないと理解できない状態ってことだからなぁ。
それなら普通に入門書を読むべき (その上でどうしても理解できない箇所があるならそれを質問すべき) という話だし、
理解する気が無くてそういうプログラムが欲しいだけなら宿題スレに投下したほうがいい。
872:デフォルトの名無しさん
22/07/22 03:00:46.63 GQs5tpkHd.net
質問者です
僕は答えだけが欲しいんです。どうして説教なんかしてくるんですか?
貴方達は黙ってコードを書いてくれるだけでいいんです。それ以外のことを私は貴方達に求めていません
ご回答よろしくお願い致します
873:蟻人間
22/07/22 04:01:58.51 9CWw4cOJd.net
成績を収める配列変数を宣言して下さい。
ループ変数iとforループを使ってデータ入力する処理を記述して下さい。
ループ変数iとforループを使って合計を求める処理を記述して下さい。
合計と件数より、平均値を計算して下さい。
874:デフォルトの名無しさん
22/07/22 13:35:19.04 63Xcy7bk0.net
>>859
回答するから駅前でパンツ脱いで待ってろ
875:デフォルトの名無しさん
22/07/22 13:53:06.84 o6RHeQNrM.net
jkの視線が辛いです…
876:デフォルトの名無しさん
22/07/22 16:50:00.97 FTsytUCEd.net
近道を教えてください
目的地?そんなもの知らん
いじわるしないで近道だけ教えてくださいよ
877:デフォルトの名無しさん
22/07/22 17:05:43.46 5FG7Keur0.net
だから宿題スレ逝けってば
878:デフォルトの名無しさん
22/07/22 17:48:50.97 xVgLzEHZ0.net
他人にコード書いてもらいたいならお金払うのが常識だぞ
勉強になったな
879:デフォルトの名無しさん
22/07/22 18:36:47.63 iW5ae+Pc0.net
>>859
別人か?
釣りか?
スレを活性化させるための煽りか?
880:デフォルトの名無しさん
22/07/22 20:52:21.05 6vEMzc8Xd.net
>>866
別人です
釣りです
スレを活性化させるための煽りです
そもそもワッチョイ見れば分かるけどキャリア違うし
>>863も同じような輩でしょ
881:ハノン
22/07/22 21:13:42.27 axiBU42YH.net
炎上学習法がはじまりました…
882:デフォルトの名無しさん
22/07/22 22:22:56.34 V/ouQpU1d.net
>>867
皮肉って概念を聞いたことあるかね
883:デフォルトの名無しさん (ワッチョイ daad-Vb2/)
22/07/22 23:07:49 iW5ae+Pc0.net
そういや Excel 使った方が楽にできそうな問題だな。
884:デフォルトの名無しさん
22/07/23 06:55:01.01 GjOkJS/b0.net
絶望的に適性ないやつがいるな
そんな無駄なことは今すぐやめろ
限りある人生をもっと有意義なことに使え
885:デフォルトの名無しさん
22/07/23 20:24:50.53 xI/QpgaL0.net
たとえば?
886:デフォルトの名無しさん
22/07/23 20:54:12.53 ZMU4WQ2EH.net
>>871
1.適性がない、というその適性を定義してください。
2.適性がない、となぜ判断したのか 1. をもとに詳しく記述してください
3.1.2.が出来ないのではないのならば、あなたこそ、あなたのいう適性をもちあわせていない、と私は判断します
以上
887:デフォルトの名無しさん (スプッッ Sd73-ENu5)
22/07/23 21:02:39 qM4duTiyd.net
エラーや不具合があったときに理屈じゃなくて直感ですぐに原因が思いつく
888:タイプは適性があると思う 経験で補えるっちゃ補えるけど
889:デフォルトの名無しさん
22/07/23 22:07:51.06 HvDaSJUkd.net
>>873
あんたの判断がどうかしたのか
890:デフォルトの名無しさん
22/07/23 22:19:32.27 KvepzSxm0.net
当社比
891:デフォルトの名無しさん
22/07/23 23:01:14.87 FDsLOdQw0.net
>>874
人間の無意識領域が活発に活動している証拠ですね
最近は前野隆司氏の受動意識仮説に心惹かれます
実験心理学からは「準備運動電位」がずいぶん前に提示されていますが、今はどこまでわかっているのでしょうか?
スレリンク(tech板:703番)
スレリンク(tech板:23番)
892:デフォルトの名無しさん (ワッチョイ 0bae-SXL5)
22/07/24 06:47:50 cLNfquIV0.net
>>873
どうした、頭に血が昇ってw
身に覚えがあるんだろ
別に俺が定義しようがしまいが関係ない
おまえが直面している現実が全てだ
コード書けねえんだろバーカw
そんなん俺は厨房の頃からやってたぜ
当時はBASICすらなく機械語だった
やるやつは人のせいになんかしねえんだよ
893:デフォルトの名無しさん (スップ Sd33-ENu5)
22/07/24 07:04:34 gwuc5Le4d.net
ジジイがイキってるの悲しすぎるな
キャリア積んだおっさんならもうコードなんて書いてないのに
894:デフォルトの名無しさん
22/07/24 07:35:48.77 kz71o77Jd.net
>>874
経験がないとそんなことは無理だな
経験によって結果から原因を推定するデータベースを増やしているに過ぎない
生まれつきプログラマになるべく生まれた人間などいないw
895:デフォルトの名無しさん
22/07/24 08:01:42.09 QsSUkFLAM.net
直感というより論理(左脳)と感性(右脳)のどちらの活性が高いかの違い
896:デフォルトの名無しさん
22/07/24 08:03:50.29 bdlqmtah0.net
>>880
同じ事象に遭遇しても原因を自分でちゃんと究明して対策してる奴と人に言われて直すだけの奴だと取得する経験値がだいぶ違うだろ
そういう意味での適性はあると思う
897:デフォルトの名無しさん (スップ Sd73-E5Ow)
22/07/24 08:41:03 mCJq3UO5d.net
>>879
何も知らねえネンネだなw
熟練者を歳だけでやめさせるバカ企業が
今どうなってるか見りゃわかるだろめくら
IT業界だけ特別とでも思ってんのか
昭和の一時期だけ特別だったが
いい歳こいたジジイが言ってんなら
進化の止まった化石はてめーだ
898:デフォルトの名無しさん (スップ Sd33-ENu5)
22/07/24 09:04:36 gwuc5Le4d.net
>>883
コーダージジイ効いてて草
こういうやつってマジでガキに見えるよなー
人の上に立った経験とか一度も無さそう
899:デフォルトの名無しさん
22/07/24 10:46:43.07 Zzdkl5Gk0.net
>>880
しかし、生まれつき、あるいは育ちのせいであるのかもしれませんが、無意識領域が活発に活動しやすい人、というのはあるかもしれませんよ
人はそれを「閃きの人」と呼ぶようですが
そして無意識領域がよく働く人はプログラマの適性があるといってもいいでしょうね
スレリンク(tech板:703番)
スレリンク(tech板:23番)
900:デフォルトの名無しさん
22/07/24 11:42:01.96 W6pjxqRvM.net
閃き改変スパゲティ
901:デフォルトの名無しさん
22/07/24 16:22:46.57 9ixHhHoi0.net
BASICもない時代か。
俺の時は TK-80 に BS 乗っかったやつが BIT-INN に並んでたな。カラーの COMPO-BS もあった。
その他 Apple ][、PET、TRS-80、BASIC MASTER Level 2、MZ-80K 等がある時代で、フロッピーディスクが Apple のやつは1枚2000円だったかな?
902:デフォルトの名無しさん
22/07/24 16:31:31.34 95dB6L1Ta.net
COMPOにカラーなんてあった?
903:デフォルトの名無しさん
22/07/24 16:45:38.99 9ixHhHoi0.net
>>888
なかったっけ? あったような気がするんだが。
PC-8001 の画面の見間違いではないと思う。まだ出てなかったし。
904:デフォルトの名無しさん
22/07/24 16:49:13.87 cLNfquIV0.net
>>884
コード書けねえ産業廃棄物がコーダー馬鹿にしてんな
フリーターだのニートだのってレベルの稼ぎの扶養虫にしかなれる見込ねえくせに
俺は生まれながらの帝王だ退かぬ媚びぬ省みぬだと? ぶわははは
這い上がる気力のねえやつに栄光はねえんだよ、憶えておきな
905:デフォルトの名無しさん
22/07/24 17:04:41.33 xRzJF5neF.net
>>885
受動意識みたいなオカルトに構っていてはプログラマにはなれませんよ
プロの仕事にはすべて説明可能なことが求められます
どこかのリモートで動いてる端末人間にプログラムはできません
906:デフォルトの名無しさん (ワッチョイ 1301-T1rX)
22/07/24 17:18:29 bdlqmtah0.net
なかったと思うよ、そもそもCOMPO-BS/80はキャラクター表示しかできないし
907:デフォルトの名無しさん (US 0H0b-RyvJ)
22/07/24 17:25:59 C0umvz7vH.net
>>891
デバッグ箇所の発見にも説明が求められるのですか?バグが修正されたことを証明できれば十分なのではないでしょうか?
908:デフォルトの名無しさん
22/07/24 17:34:50.38 cLNfquIV0.net
発見に至る思考過程はいらんな
ドライに事実関係の説明のみで足りる
犯人探しは俺らの仕事ではなく
下手に口を出すとこっちが立場悪くなる
909:デフォルトの名無しさん
22/07/24 18:23:35.95 nci3iowod.net
>>893
>デバッグ箇所の発見
バグ箇所のことかな
どうしてそのようなバグが発生したかまで明確にしないと
同じバグがまた起こるだろう
910:デフォルトの名無しさん
22/07/24 18:43:56.60 3i0SwxtcH.net
>>895
話をずらしましたね
私は
>デバッグ箇所の発見
つまり、どこから手をつければいいか当たりをつける能力について言及したのであって、発見したバグの振る舞いについて説明する必要はないとはいっていませんね
話をずらしてはいけませんよね
911:デフォルトの名無しさん
22/07/24 18:49:15.54 DQlWH9SB0.net
どこにバグがあるか、ゴーストがささやいてくれる
912:デフォルトの名無しさん
22/07/24 18:52:37.42 cLNfquIV0.net
言い逃れの天才はいらねーよ
頼むから志願してくんな
ゴミ処理だけでどんだけ負担か考えろ馬鹿が
913:デフォルトの名無しさん
22/07/24 18:54:41.69 cLNfquIV0.net
それで給料くださいだと? 金銭感覚が絶望的にバグってる超危険人物め
914:デフォルトの名無しさん
22/07/24 19:03:04.31 DQlWH9SB0.net
そういう人物は確かにいる
システム障害時に、数分で原因を調べ上げ復旧する奴
915:デフォルトの名無しさん
22/07/24 19:24:24.29 ZZNXvMhPH.net
>>900
その人なりのロジックがちゃんとあるけれども、凡人には理解できないのかもしれませんね…
まあ意識(ロジック)も無意識もフルに総動員しているとは思いますが
>>891
あくまでとある仮説に興味がある、といっているだけで、それですべてを説明しようとは思っていませんよ
それにしても「準備運動電位」、あなたはどう説明しますか?
916:デフォルトの名無しさん
22/07/24 19:27:04.95 cLNfquIV0.net
電位ってそれ以上でもそれ以下でもないな
喩え話でもしたいようだが、この世界では究極の最重度池沼ってだけw
917:デフォルトの名無しさん
22/07/24 19:32:05.82 bdlqmtah0.net
>>896
でかいシステムなら分割して調査することもあるからどこから調査するとかどうやって調査するかとか事前に決めるのは珍しくないぞ
そんなことも知らないのはお前の経験値が低いだけ
918:デフォルトの名無しさん
22/07/24 19:58:27.05 3wgufn1TH.net
>>903
そんなことはあたりまえでしょう?
手当たりしだいにしらみつぶしに見てバグが見つかるとでも?
でもね、凡人が見当もつかない糸口をたどって(バグつぶしに限らず)問題解決を行う現場を見てきましたよ
そういう人間の考え方が、単にロジック一辺倒ではないのでは?という切り口で話をしているものだと思っているのですが
あるいは自分のコーディングの最中に自分のミス・バグを見つけ出すのは、最初自分が正しいと考えているだけに、結構難しいことだと思っているのですが、
そういうときは非凡な人はどういう思考方法をとっているものなんでしょうか?
919:デフォルトの名無しさん
22/07/24 20:09:14.55 IZxLU3+7a.net
自分が正しいと考えていないに決まってるだろ
920:デフォルトの名無しさん
22/07/24 20:21:06.06 bdlqmtah0.net
>>904
> 手当たりしだいにしらみつぶしに見てバグが見つかるとでも?
それでないと見つからないバグもある
> でもね、凡人が見当もつかない糸口をたどって(バグつぶしに限らず)問題解決を行う現場を見てきましたよ
そう言うのは経験値が違う
まあその考え方を文書化できるかどうかは別の話
> あるいは自分のコーディングの最中に自分のミス・バグを見つけ出すのは、最初自分が正しいと考えているだけに、結構難しいことだと思っているのですが、
> そういうときは非凡な人はどういう思考方法をとっているものなんでしょうか?
お前はテストもしないのかよ
921:デフォルトの名無しさん
22/07/24 21:29:00.78 9ixHhHoi0.net
スレが活性化したようだな。
読む気が起こらんけど。
922:デフォルトの名無しさん
22/07/24 21:42:14.57 lVfeNqR1r.net
全然、C言語の話にならんな
923:デフォルトの名無しさん
22/07/24 21:44:29.10 +vY6C834M.net
話題に参加できない…
924:デフォルトの名無しさん
22/07/25 06:28:56.85 DH7dOKBU0.net
何でしらみつぶしが出てくるんだ
不具合の内容から疑われることを挙げて
排除できる項目を排除して疑う範囲を狭めていくにあたり
論理思考が得意なやつとそうでないやつの違いが出るってだけだ
925:デフォルトの名無しさん
22/07/25 07:35:59.20 fNFid1J7H.net
>>910
バグの排除にロジックが必要なのは当然ですが、それだけではないでしょう?
特に自分のバグを外すには、そもそも自分のロジックを疑うという能力は、ロジックを使うのはまず困難なのでは?
926:デフォルトの名無しさん
22/07/25 07:56:46.33 GzNr1keE0.net
>>910
疑う範囲を狭めて最後はしらみつぶしとか普通にあるだろ
なぜ排他だと思った?
927:デフォルトの名無しさん
22/07/25 08:14:58.48 DH7dOKBU0.net
バグの排除とは言ってない
疑いが晴れたものを検査から除外するということだ
なぜ排他が出てくるのか脈絡がわからない
928:デフォルトの名無しさん
22/07/25 09:21:33.29 /kQlrWHQa.net
>>913
> バグの排除とは言ってない
おれも言ってないけど?
> 疑いが晴れたものを検査から除外するということだ
検査の意味がわからんが調査のことならしらみつぶしは疑いを晴らす方法の一つ
> なぜ排他が出てくるのか脈絡がわからない
お前がしらみつぶしを排除しようとしてるから
929:デフォルトの名無しさん
22/07/25 09:31:36.48 DH7dOKBU0.net
アホ検知用にわざとアンカー貼らなかったら見事に引っかかったなw
930:デフォルトの名無しさん (ワッチョイ 1301-T1rX)
22/07/25 09:53:41 GzNr1keE0.net
なにを引っ掛けたつもりになってるのかさっぱりわからん
まあまともなレスを返せなくなったんだろうなw
931:デフォルトの名無しさん (ワッチョイ 1363-VsAj)
22/07/25 11:30:58 TD+9RuG80.net
仕事している人は、こんなところで遊んではいない
932:デフォルトの名無しさん
22/07/25 11:45:05.33 dJJE5upaa.net
C++の話題は禁止?
933:デフォルトの名無しさん
22/07/25 11:49:31.88 TD+9RuG80.net
禁止ではないと思うが、スレ違い扱い受ける
934:デフォルトの名無しさん (スップ Sd33-8HTV)
22/07/25 12:13:08 n7JQk0Isd.net
>>901
ただのDSPだろう
CPU(脳)が応答していては間に合わない用途のためにプログラマブルなDSPがある
ボールが見えてから打つかどうか決めていては間に合わない
このコースに来たらバットを振れと反射神経をプログラムできるようになっている
それがあたかも脳の判断に先行してるように見えるだけ
935:デフォルトの名無しさん
22/07/25 12:52:39.70 BRC10lp0d.net
>>914
流れ読めてないアフォハケーン
936:デフォルトの名無しさん
22/07/25 13:27:55.29 GzNr1keE0.net
>>921
レスできなくなって流れが読めてない~ってバカ?w
937:デフォルトの名無しさん
22/07/25 13:30:31.02 lj82liZDM.net
シーッ
938:デフォルトの名無しさん
22/07/25 15:49:07.62 iiUi9YtaA.net
はっきり言ってやらなきゃ解らんようだな
バグの排除と言ったのが誰なのか
おまえ読み間違えてんだよ
939:デフォルトの名無しさん
22/07/25 15:58:23.55 GzNr1keE0.net
>>924
だから>>911なんて俺には関係ないだろ
アンカーもまともに追えないのか?
940:デフォルトの名無しさん
22/07/25 16:01:28.30 TD+9RuG80.net
ロジックは合っているがバグだ、というのは割とよくある(まれにではない)
941:デフォルトの名無しさん
22/07/25 16:36:40.16 GzNr1keE0.net
>>926
・仕様バグ
・非同期処理絡み
・限界値オーバー等
それ以外ってあったっけ?
942:デフォルトの名無しさん
22/07/25 17:00:35.20 TD+9RuG80.net
今は昔、DBが気軽に使えなかったシステムがあった。
プレーンファイルにデータが格納されていた。
お客の要求は、
「その中からキャンセルされたデータを見つけ、取り除いてくれ。件数は高々数十件のはず」
当時のSEは、キャセルデータ一覧から一つずつデータを取り出し、
格納されたファイルから見つけてはキャンセルフラグをセットしていく
という設計をした。スッキリした設計で、客のレビューも通った。
プログラマは仕様書通りにプログラムを作成した。
実運用に入ったところ、この処理がいつまで経っても(何時間も)終わらない事態になった。
原因調査を依頼され、調べて対処方法を提案し、
プログラムの手直しをした。
その結果、処理は10分程度で終わる様になった。
実データは、お客の想定よりは多かった(と言っても100件程度だったが)ことと
試験環境が貧弱で、性能評価が不十分だったことが挙げられた(公式見解)。
943:デフォルトの名無しさん
22/07/25 17:06:35.01 p29EsXcp0.net
今は昔 ドラゴンボールというものありけり
7つ集めないと気軽に使えなかった
944:デフォルトの名無しさん
22/07/25 19:19:30.93 0R5nn0qA0.net
非同期やマルチスレッドなんかの 暗に平行に動いてるようなやつ
の想定順序外の順で進んでったとき
945:デフォルトの名無しさん
22/07/25 19:25:09.85 gun8tVmY0.net
昔のプログラム系コラムで(うろ覚えなんで改変あり)
統計計算するコード書いて、
自分で用意したデータでは問題なかったが、
デバッガ―チームのデータでは誤差が酷いとの報告が。
変数をfloatからdoubleにしても改善せず、
使ったテストデータ見せてもらったら数値が10兆のや1/10兆のまであったとかなんとか。
946:デフォルトの名無しさん (ワッチョイ 8bbb-OROS)
22/07/25 19:42:53 uz33IoOs0.net
それって範囲チェックを怠った普通のバグよね?
947:デフォルトの名無しさん
22/07/25 20:13:02.04 GzNr1keE0.net
>>928,931
件数や数値の範囲を規定してなかったんだろうな
規定してたらテストしてるだろうし
>>928の方はキャンセルする件数も重要だけど変更するプレーンファイルのサイズも重要
948:デフォルトの名無しさん
22/07/25 21:04:57.01 TD+9RuG80.net
仕様通りに作ってあるってことで
どこもバグだと認めず、修正にかかれなかった
949:デフォルトの名無しさん (ワッチョイ 1301-T1rX)
22/07/25 21:23:11 GzNr1keE0.net
実行時間の上限も書いてなかったんでしょ?
ならバグじゃないからそりゃ誰も修正しないよね
950:デフォルトの名無しさん (ワッチョイ 1363-VsAj)
22/07/25 22:30:59 TD+9RuG80.net
そうもいかん
放置すれば業務が止まる
951:デフォルトの名無しさん
22/07/26 04:44:04.50 1cOtUCQ/0.net
なら仕様を作った奴がポンコツだったってだけの話
952:デフォルトの名無しさん
22/07/26 06:23:30.91 3o/UjHLA0.net
>>937
奈良仕様... 要人警護でバグるんだな。
953:デフォルトの名無しさん
22/07/26 15:23:03.61 SJaqZdjxH.net
>>920
それは条件反射ではない普通の「反射」
か、あるいは条件反射ですね
「準備運動電位」
URLリンク(ja.wikipedia.org)
1970年代に行われた実験により、ボタンを押す・指を一本曲げる、手首を曲げる等運動の先立って脳に変化が起こる、という観測結果が得られています
2008 年には、被験者が意思決定をするよりも最大 7 秒先立って脳活動が認められる、という^報告がありました
954:デフォルトの名無しさん
22/07/26 18:24:38.80 fW/tQ0510.net
その生理現象を検知して価値を生み出すコードを書くならともかく
精神論や根性論の類いに持ち出す野郎はスレチ
955:デフォルトの名無しさん
22/07/26 20:36:46.75 s+/k7yg8H.net
>>940
ええ、バグ取りに使えないものかと
異様にバグ取りがうまい人の頭の使い方について話題にしようと思ったんですよ
956:デフォルトの名無しさん
22/07/26 20:59:48.42 RzFS95olr.net
そんなの経験の差でしょ
脳科学なんかを引くより経験積んだほうが実用的で合理的
957:デフォルトの名無しさん
22/07/26 21:21:37.87 LALlY+2gH.net
>>942
いつまでも KKD ではねえ
もう少し精緻な話がしたいものです
958:デフォルトの名無しさん
22/07/26 21:22:24.36 4nABh0qj0.net
バグ取りの上手い人というか、発見が早い人は
アスペ気味の人が多い
これは悪い意味で言っているのではなく
天才肌というか、直感でものを把握出来る人という意味です
959:デフォルトの名無しさん
22/07/26 21:24:16.26 LALlY+2gH.net
>>944
それもアラアラな話だと思いますが
しかし、その直感でものを把握できる、ってのがどういう思考法なのか興味がありますね
もう少しそのタイプのプロフィールを教えていただけませんか?
960:デフォルトの名無しさん
22/07/26 21:33:29.39 4nABh0qj0.net
そういうのは、誰もマネが出来ないから参考にするのは無理でしょう
脳細胞のシナプスからして違うかもしれないし
961:アリ人間
22/07/26 21:58:01.96 SFGiBpCod.net
プログラムの仕組みを完全に理解したいなら、ITパスポート、基本情報、コンピュータサイエンスの3つ。
962:デフォルトの名無しさん
22/07/28 12:32:34.18 FYpyeWPbd.net
>>941
C++の話ではないね