!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/
C17
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf
C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf
C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html
C FAQ 日本語訳
http://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
C言語なら俺に聞け 158
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ブーイモ MMcf-4SjH)
2021/12/25(土) 12:11:46.61ID:xxeaCAplM119デフォルトの名無しさん (ドコグロ MMae-YJKT)
2022/01/28(金) 08:17:06.42ID:2Fs3iqwoM まあ、あっても悪さしないし心配なら付けるのは正しいと思う
>>118の言う通りよく見るイディオムになってるので違和感はあるけど
>>118の言う通りよく見るイディオムになってるので違和感はあるけど
120デフォルトの名無しさん (スプッッ Sdea-8U/q)
2022/01/28(金) 08:25:24.42ID:D0DTDHxMd char *src, *dst;
while(*dst++=*src++);
みたいな書き方はよく見るけど
最適化とか存在しない古いコンパイラのための書き方だよなといつも思う
while(*dst++=*src++);
みたいな書き方はよく見るけど
最適化とか存在しない古いコンパイラのための書き方だよなといつも思う
121デフォルトの名無しさん (スッップ Sd0a-fJWp)
2022/01/28(金) 09:16:27.33ID:grc2q108d いい意味の面倒くさがりだよ
122デフォルトの名無しさん (スプッッ Sdea-COP8)
2022/01/28(金) 09:23:04.37ID:Tsd33EHWd 最適化だけの問題ではないぞ
while(*dst=*src){dst++;src++;}
では変数名を変更する必要が出た場合2ヵ所づつ書き換えねばならない
→ミスにつながる
それにループが終わった後でdstとsrcは最後の要素を指しているので余計なインクリメントが要るかもしれない
while(*dst=*src){dst++;src++;}
では変数名を変更する必要が出た場合2ヵ所づつ書き換えねばならない
→ミスにつながる
それにループが終わった後でdstとsrcは最後の要素を指しているので余計なインクリメントが要るかもしれない
123デフォルトの名無しさん (ワッチョイ a510-Y4FF)
2022/01/28(金) 11:00:14.06ID:yXxqNK5h0 初心者や他言語ばっかりやってた人の誤読回避は考慮する?
124デフォルトの名無しさん (ワッチョイ eaad-dw97)
2022/01/28(金) 11:17:11.26ID:udo1auGz0 この頃発見した printf() のフォーマット
% の後に # を付けると x 変換の時に頭に 0x を付けてくれると知り、早速こう書いてみた。
printf("%#x\n", 0xab);
0xab が出力される。
これはいい、と思い16進4桁出そうとしてこう書いた。
printf("%#04x\n", x);
すると 0x は付いたがその後が2桁になった。どうやら 0x の部分の桁数も含めなければいけないようだ。仕方がないのでこう書き直す。
printf("%#06x\n", x);
やった!できた!
しかし幸せは長くは続かない。やがて x に 0 が入った状態でここを通過。以下の出力を得る。
000000
% の後に # を付けると x 変換の時に頭に 0x を付けてくれると知り、早速こう書いてみた。
printf("%#x\n", 0xab);
0xab が出力される。
これはいい、と思い16進4桁出そうとしてこう書いた。
printf("%#04x\n", x);
すると 0x は付いたがその後が2桁になった。どうやら 0x の部分の桁数も含めなければいけないようだ。仕方がないのでこう書き直す。
printf("%#06x\n", x);
やった!できた!
しかし幸せは長くは続かない。やがて x に 0 が入った状態でここを通過。以下の出力を得る。
000000
125デフォルトの名無しさん (ワッチョイ a563-Xc5L)
2022/01/28(金) 11:22:43.44ID:dRbZojn90 Cは初心者向けではないし、可読性は考慮していない
やりたい事をさっとコード化出来る人に向いている言語
やりたい事をさっとコード化出来る人に向いている言語
126デフォルトの名無しさん (ドコグロ MMae-YJKT)
2022/01/28(金) 12:25:59.28ID:6cofCgvGM127デフォルトの名無しさん (ワッチョイ 7d01-RvMd)
2022/01/28(金) 12:32:45.35ID:obJ/SPWt0 文字列のエスケープシーケンスでバイナリ直接したんだけど、例えば"\x10"の後に"a"という文字を続けようとして"\x10a"って書くと値が大きすぎるってエラーになる。
"\x10" "a"と分割するしかない?
"\x10" "a"と分割するしかない?
128デフォルトの名無しさん (スッップ Sd0a-fJWp)
2022/01/28(金) 12:35:51.06ID:grc2q108d Cはプログラマを信頼する言語だ
悪いことをさせない制限より
自由度を優先させている
怠けるやつより進歩する者を優先するのもしかり
悪いことをさせない制限より
自由度を優先させている
怠けるやつより進歩する者を優先するのもしかり
129デフォルトの名無しさん (ドコグロ MMae-YJKT)
2022/01/28(金) 13:19:26.12ID:vyOOr9LZM >>127
> "\x10" "a"と分割するしかない?
それしかなさげ
8進表現は最大3文字となってるから "\0123" は '\012' と '3' になるけど16進表現には桁数の制限がないので "\x10a" を1文字に解釈しようとしてエラーになる
char * の文字列は2文字、wchar_t の文字列は4文字までにすればいいと思うんだけど
> "\x10" "a"と分割するしかない?
それしかなさげ
8進表現は最大3文字となってるから "\0123" は '\012' と '3' になるけど16進表現には桁数の制限がないので "\x10a" を1文字に解釈しようとしてエラーになる
char * の文字列は2文字、wchar_t の文字列は4文字までにすればいいと思うんだけど
130デフォルトの名無しさん (ワッチョイ 7d01-RvMd)
2022/01/28(金) 13:57:54.02ID:obJ/SPWt0131はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5e3e-dw97)
2022/01/28(金) 16:18:28.78ID:hT9TavA00 >>127,129
マイクロソフトのドキュメントにも言及があるのを見つけた。
https://docs.microsoft.com/ja-jp/cpp/c-language/octal-and-hexadecimal-character-specifications?view=msvc-170
不格好だけど C はそういうもんだからしょうがないね。
マイクロソフトのドキュメントにも言及があるのを見つけた。
https://docs.microsoft.com/ja-jp/cpp/c-language/octal-and-hexadecimal-character-specifications?view=msvc-170
不格好だけど C はそういうもんだからしょうがないね。
132デフォルトの名無しさん (ワッチョイ 7d01-RvMd)
2022/01/28(金) 16:49:19.01ID:obJ/SPWt0 >>131
わざわざ調べて頂いてありがとうございます。
#define ESC_UP "0x1b" "A"
のようにマクロで逃げることにしました。
使う側では
printf("今からUP" ESC_UP "UP完了");
と少し気持ち悪いですが。
わざわざ調べて頂いてありがとうございます。
#define ESC_UP "0x1b" "A"
のようにマクロで逃げることにしました。
使う側では
printf("今からUP" ESC_UP "UP完了");
と少し気持ち悪いですが。
133デフォルトの名無しさん (ドコグロ MMae-YJKT)
2022/01/28(金) 17:55:44.80ID:sJpZ8snBM ESC しか使わないなら
printf("今からUP\033AUP完了");
とかでもいいかも
今更8進数かよって感じもするけど…
もしくは
#define ESC(c) "\x1b" #c
printf("今からUP" ESC(A) "UP完了");
くらいかなぁ
printf("今からUP\033AUP完了");
とかでもいいかも
今更8進数かよって感じもするけど…
もしくは
#define ESC(c) "\x1b" #c
printf("今からUP" ESC(A) "UP完了");
くらいかなぁ
134unko (ワッチョイ eab9-21ac)
2022/01/29(土) 18:53:20.85ID:cvNc/NLr0 ごめんなさい高校のc言語の課題で乱数とじゃんけん対決をして結果と手を動的配列に格納して最後にまとめて結果を表示するというやるをやってるんですが
whileループで代入した結果とその後のforループでカウントしながら表示している値が違うみたいでずっとプログラム見てても何が原因なのか分からないのでわかる方いたら教えて欲しいです.
https://github.com/unko-c/kadai/blob/main/kadai.c
whileループで代入した結果とその後のforループでカウントしながら表示している値が違うみたいでずっとプログラム見てても何が原因なのか分からないのでわかる方いたら教えて欲しいです.
https://github.com/unko-c/kadai/blob/main/kadai.c
135デフォルトの名無しさん (ワッチョイ a563-Xc5L)
2022/01/29(土) 19:18:32.81ID:mAwlWFlr0136デフォルトの名無しさん (ワッチョイ a5d2-8U/q)
2022/01/29(土) 19:22:51.55ID:wjo4lb340 44: どっから配列が出てきた
デバッガ使えばプログラムの動き見るの捗るから使え
使えないなら怪しそうなとこにひたすらprintfを埋めろ
デバッガ使えばプログラムの動き見るの捗るから使え
使えないなら怪しそうなとこにひたすらprintfを埋めろ
137デフォルトの名無しさん (ワッチョイ a563-Xc5L)
2022/01/29(土) 20:13:03.39ID:mAwlWFlr0 (&janken->man)[i] = man;
printf("man:%2d ",(&janken->man)[i]);
構造体配列のメンバーアクセス方法が間違ってる
case 0:
countDraw++;
この直後にはbreak;を入れること(全てのcase文に適用)
while(i<=j && man<=2 && man>=0) {
ここにmanを入れる意味は?
入力範囲チェックを意図するなら、ここではなく
scanf直後に、範囲外ならcontinueさせる方が良い
無駄もあるけれど、この辺を直せば動くんではないか?
printf("man:%2d ",(&janken->man)[i]);
構造体配列のメンバーアクセス方法が間違ってる
case 0:
countDraw++;
この直後にはbreak;を入れること(全てのcase文に適用)
while(i<=j && man<=2 && man>=0) {
ここにmanを入れる意味は?
入力範囲チェックを意図するなら、ここではなく
scanf直後に、範囲外ならcontinueさせる方が良い
無駄もあるけれど、この辺を直せば動くんではないか?
138unko (ワッチョイ eab9-21ac)
2022/01/29(土) 20:51:58.61ID:cvNc/NLr0139unko (ワッチョイ eab9-21ac)
2022/01/29(土) 20:54:58.88ID:cvNc/NLr0 >>136
一応whileの直前当たりでかろっくで配列確保してます
一応whileの直前当たりでかろっくで配列確保してます
140デフォルトの名無しさん (ワッチョイ a5d2-8U/q)
2022/01/30(日) 01:38:43.74ID:05k5AmyC0 44: (&janken->man)[i]
janken->man は配列ではない。
jankenは配列とみなせるポインタだが関係ない
たぶんコンパイルを通すためにこの形になってるんだろうけど
janken[i].man とするべき
janken->man は配列ではない。
jankenは配列とみなせるポインタだが関係ない
たぶんコンパイルを通すためにこの形になってるんだろうけど
janken[i].man とするべき
141デフォルトの名無しさん (ワッチョイ 6624-21ac)
2022/01/30(日) 07:23:03.99ID:qcbJpmhr0 ソケット関連の質問です。
この前ドメイン名取得してきたのですが、(練習のため)
webブラウザにurlを打ち込んだ時に自分のパソコン内のサーバーソケットにつなげて
htmlで”HelloWorld”と吐き出したいのですが、ドメイン名IPアドレスの紐づけ
ってどの段階でやればいいのでしょうか?
ソケットを作るときにするのかなと思っているのですがそもそもこの考え自体が間違っているでしょうか?
この前ドメイン名取得してきたのですが、(練習のため)
webブラウザにurlを打ち込んだ時に自分のパソコン内のサーバーソケットにつなげて
htmlで”HelloWorld”と吐き出したいのですが、ドメイン名IPアドレスの紐づけ
ってどの段階でやればいいのでしょうか?
ソケットを作るときにするのかなと思っているのですがそもそもこの考え自体が間違っているでしょうか?
142デフォルトの名無しさん (ワッチョイ 7d01-dw97)
2022/01/30(日) 08:48:53.30ID:v3wXXGPY0 名前-IPを関連させる(D)DNSの話であって、ほぼソケット関係無いような
143デフォルトの名無しさん (ドコグロ MMae-YJKT)
2022/01/30(日) 09:18:12.24ID:uPZ//xKSM >>141
> ドメイン名IPアドレスの紐づけ
紐づけと言うか解決はgetaddrinfo()でやる
https://linuxjm.osdn.jp/html/LDP_man-pages/man3/getaddrinfo.3.html
文字通りの紐づけなら>>142が言うようにDNSの話だからシステム管理者なりに聞いてくれ
てか、まずOS書いてくれ
> ドメイン名IPアドレスの紐づけ
紐づけと言うか解決はgetaddrinfo()でやる
https://linuxjm.osdn.jp/html/LDP_man-pages/man3/getaddrinfo.3.html
文字通りの紐づけなら>>142が言うようにDNSの話だからシステム管理者なりに聞いてくれ
てか、まずOS書いてくれ
144unko (ワッチョイ eab9-21ac)
2022/01/30(日) 09:28:39.21ID:ft1MsLjp0 >>140
ありがとうございます
構造体のポインタを宣言してるのでその表現が正しそうですね
以前の課題だと構造体のメンバのポインタに配列を割り当てていたのでそれと同じように何も考えないでアロー演算子でアクセスしちゃってました
ありがとうございます
構造体のポインタを宣言してるのでその表現が正しそうですね
以前の課題だと構造体のメンバのポインタに配列を割り当てていたのでそれと同じように何も考えないでアロー演算子でアクセスしちゃってました
145デフォルトの名無しさん (ワッチョイ 6624-21ac)
2022/01/30(日) 10:55:49.17ID:qcbJpmhr0146デフォルトの名無しさん (ワッチョイ 6624-21ac)
2022/01/30(日) 11:46:45.94ID:qcbJpmhr0 VSやった・・・
147デフォルトの名無しさん (ドコグロ MMae-YJKT)
2022/01/30(日) 12:38:44.79ID:x0r2XrqVM VSに2021はない…
148デフォルトの名無しさん (ワッチョイ eaad-dw97)
2022/01/30(日) 15:19:39.90ID:wVIChEm/0 >>134
33行目と34行目は入れ替えないと構造体の配列のメモリ確保が一つ分少なくなる。
33行目と34行目は入れ替えないと構造体の配列のメモリ確保が一つ分少なくなる。
149デフォルトの名無しさん (ワッチョイ eaad-dw97)
2022/01/30(日) 15:27:39.02ID:wVIChEm/0 >>141
ソケットで connect() する前には接続先アドレスが分かっている必要があるが、
そのアドレスを調べるのは connect() 前のどの時点でやっても良い。
というか後々ソケットのconnect()で利用するかどうかとは無関係に調べて良い。
ソケットで connect() する前には接続先アドレスが分かっている必要があるが、
そのアドレスを調べるのは connect() 前のどの時点でやっても良い。
というか後々ソケットのconnect()で利用するかどうかとは無関係に調べて良い。
150デフォルトの名無しさん (ブーイモ MM3e-4vpr)
2022/01/30(日) 19:53:38.68ID:F7MhehSXM このスレの猛者が書く>>134の課題ってどんなコードになるんやろ?
151デフォルトの名無しさん (テテンテンテン MM3e-StUm)
2022/01/30(日) 21:12:41.91ID:olbUxhsiM 初級クラスであっさり書ける
152デフォルトの名無しさん (ワッチョイ 6624-21ac)
2022/01/31(月) 16:42:11.29ID:uGjzp6vA0 VisualStudioをつかっています。
_MSC_VER
これって(マクロ?)VSのバージョンを表す定数を返すと言うことで間違いないでしょうか?
_MSC_VER
これって(マクロ?)VSのバージョンを表す定数を返すと言うことで間違いないでしょうか?
153デフォルトの名無しさん (ワッチョイ 6624-21ac)
2022/01/31(月) 16:56:08.70ID:uGjzp6vA0 #if defined(_MSC_VER) && (_MSC_VER >= 1200)
# pragma once
#endif
これの意味がよくわからないのですが
(_MSC_VER)というマクロが使えて
かつ
その値が1200以上であるなら
#endifまでをコンパイルする。
# pragma onceはこのコードが乗っているファイルと同名のファイルが
既にインクルードされているならこのファイルをインクルードしないと言うことで
合っているでしょうか?
# pragma once
#endif
これの意味がよくわからないのですが
(_MSC_VER)というマクロが使えて
かつ
その値が1200以上であるなら
#endifまでをコンパイルする。
# pragma onceはこのコードが乗っているファイルと同名のファイルが
既にインクルードされているならこのファイルをインクルードしないと言うことで
合っているでしょうか?
154デフォルトの名無しさん (スップ Sdea-8U/q)
2022/01/31(月) 17:32:45.71ID:eqy2NGbAd 合ってる
https://docs.microsoft.com/ja-jp/cpp/preprocessor/predefined-macros?view=msvc-170
VisualStudioの1200以降の環境ならごにょごにょするって時に使う
アンダーバー+大文字で始まるマクロ(変数も)はコンパイラ側で定義するので
勝手に定義してはいけない
https://docs.microsoft.com/ja-jp/cpp/preprocessor/predefined-macros?view=msvc-170
VisualStudioの1200以降の環境ならごにょごにょするって時に使う
アンダーバー+大文字で始まるマクロ(変数も)はコンパイラ側で定義するので
勝手に定義してはいけない
155デフォルトの名無しさん (ワッチョイ 6624-21ac)
2022/01/31(月) 17:46:24.93ID:uGjzp6vA0 ありがとうございます。
メンタルやられて退職してしまったので、のんびりとブースト読んでいきます。
メンタルやられて退職してしまったので、のんびりとブースト読んでいきます。
156デフォルトの名無しさん (ワッチョイ a569-26/q)
2022/01/31(月) 18:19:27.99ID:JSQ8RYi00 自前でユニークな識別子考える必要のないインクルードガードがあるなら
そっち使ったほうが間違いないしね
そっち使ったほうが間違いないしね
157デフォルトの名無しさん (ワッチョイ 6624-21ac)
2022/01/31(月) 18:47:08.25ID:uGjzp6vA0 ヘッダファイルの先をたどって行ってよくわからなくなったのですが
ヘッダファイルが全部コメントアウトされているのですが
これはインクルードするときにコンパイラに無視されますよね?
boost/config/user.hppをインクルードするときに最初にインクルードしますって
コメントして書かれてあるんですけど、使うかもしれないから一応置いておいているのでしょうか?
それとも//を外してコンパイルすることが出来るのでしょうか?
ヘッダファイルが全部コメントアウトされているのですが
これはインクルードするときにコンパイラに無視されますよね?
boost/config/user.hppをインクルードするときに最初にインクルードしますって
コメントして書かれてあるんですけど、使うかもしれないから一応置いておいているのでしょうか?
それとも//を外してコンパイルすることが出来るのでしょうか?
158デフォルトの名無しさん (ワッチョイ 6624-21ac)
2022/01/31(月) 19:08:10.67ID:uGjzp6vA0 もしかしてその名前のファイルがインクルードされているかが重要で、
インクルードする中身は関係ない的な感じでしょうか?
インクルードする中身は関係ない的な感じでしょうか?
159デフォルトの名無しさん (ワッチョイ d612-piVT)
2022/02/13(日) 15:26:31.67ID:SDlFynth0 C言語において配列のリテラルはchar型(文字列)以外存在しないのでしょうか?
例えば以下のようにchar型ポインタを初期化すると、リテラル値"test"の先頭アドレスがstrに格納されると思います。
char *str = "test";
ですが、これを次のようにint型にするとエラーになってしまいます。
int arr = {10, 20, 30};
これは{10, 20, 30}が配列を表していないということでしょうか?
例えば以下のようにchar型ポインタを初期化すると、リテラル値"test"の先頭アドレスがstrに格納されると思います。
char *str = "test";
ですが、これを次のようにint型にするとエラーになってしまいます。
int arr = {10, 20, 30};
これは{10, 20, 30}が配列を表していないということでしょうか?
160デフォルトの名無しさん (ワッチョイ 12ad-rCQD)
2022/02/13(日) 15:48:05.55ID:YeyzPZAO0 初期化は普通の代入と違ってプログラムを書き易くするために特殊な表現になっていることがあると覚えておいた方が良い。
で、その int 型の初期化だが、{10, 20, 30} は int の配列変数に対する初期化ではないからエラーになる。
int arr[] = {10, 20, 30}; ならエラーにならない。
で、その int 型の初期化だが、{10, 20, 30} は int の配列変数に対する初期化ではないからエラーになる。
int arr[] = {10, 20, 30}; ならエラーにならない。
161デフォルトの名無しさん (ワッチョイ 12ad-rCQD)
2022/02/13(日) 15:49:17.27ID:YeyzPZAO0 ごめん。間違えた。
> {10, 20, 30} は int の配列変数に対する初期化ではないから
↓
> {10, 20, 30} は int の配列変数に対する初期化だから
> {10, 20, 30} は int の配列変数に対する初期化ではないから
↓
> {10, 20, 30} は int の配列変数に対する初期化だから
162はちみつ餃子 ◆8X2XSCHEME (ワッチョイ d23e-rCQD)
2022/02/13(日) 16:21:43.07ID:nD0XyBZB0 >>159
一応はコンパウンドリテラル (複合リテラルとも言う) というものがあってこう書けなくもない。
int *arr = (int []){1, 2, 3};
だけど文字列リテラルの生存期間が常に static なのに対してコンパウンドリテラルは
それが現れる場面に応じて static な場合と automatic な場合があるのでちょっとわかり難いね。
一応はコンパウンドリテラル (複合リテラルとも言う) というものがあってこう書けなくもない。
int *arr = (int []){1, 2, 3};
だけど文字列リテラルの生存期間が常に static なのに対してコンパウンドリテラルは
それが現れる場面に応じて static な場合と automatic な場合があるのでちょっとわかり難いね。
163デフォルトの名無しさん (ワッチョイ d612-piVT)
2022/02/13(日) 17:48:50.08ID:SDlFynth0164デフォルトの名無しさん (ワッチョイ 6fd5-iDSx)
2022/02/20(日) 00:39:00.54ID:Pf4iignB0 文字列リテラルはアドレスを持つので左辺値ですよね?
いま読んでいる参考書に右辺値だと書いてあるのですが…
いま読んでいる参考書に右辺値だと書いてあるのですが…
165デフォルトの名無しさん (ワッチョイ 6fd5-iDSx)
2022/02/20(日) 00:44:54.40ID:Pf4iignB0 というか、右辺値と左辺値の違いってアドレスを持つか持たないかの違いだと思っていたのですが
違うのでしょうか?
違うのでしょうか?
166デフォルトの名無しさん (ワッチョイ ffad-I0TE)
2022/02/20(日) 00:55:29.91ID:BGIr1fua0 え、右辺値と左辺値の違いってイコールの左辺になりえるかどうかじゃねーの?
167デフォルトの名無しさん (ワッチョイ 6fe9-9yE7)
2022/02/20(日) 01:39:48.34ID:e2U3ATgO0168デフォルトの名無しさん (ワッチョイ cf46-xQsQ)
2022/02/20(日) 06:54:02.60ID:uDi/Wll10169デフォルトの名無しさん (スップ Sd1f-f428)
2022/02/20(日) 08:47:32.72ID:liZElF75d 書き込み可能かどうかもあるだろ
170はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 133e-mA98)
2022/02/20(日) 08:56:21.85ID:eF5vmZw/0 >>164
配列は lvalue だが、ポインタに変換する規則が適用された後は lvalue ではない。
配列は lvalue だが、ポインタに変換する規則が適用された後は lvalue ではない。
171デフォルトの名無しさん (ワッチョイ 6fe9-9yE7)
2022/02/20(日) 09:33:21.73ID:e2U3ATgO0 >>168
たとえば数値リテラルや算術演算子の結果など。これらに対して "&" でアドレスを取ることはできない。
たとえば数値リテラルや算術演算子の結果など。これらに対して "&" でアドレスを取ることはできない。
172はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 133e-mA98)
2022/02/20(日) 09:45:32.09ID:eF5vmZw/0 >>168
仕様上の理屈ではアドレスをもたないものが右辺値 (rvalue) なんじゃなくて右辺値がアドレスを持たないので逆なんだが……。
たとえば
int a=1;
a=2;
というように変数に代入できるが、
1=2;
という式がおかしいことは感覚的にわかるだろう。
a には 1 が入っているんだから a を評価すれば 1 になるはずなのに 1=2; と同じではない。
このとき a は a に入っている値のことであると同時に場所としての性質を持つ。
アドレスを持たないのが右辺値であるのとは対照的にアドレスを持つ (場所としての性質を持つ) のが左辺値だ。
左辺値は現れる文脈によって「値 (右辺値)」に変換される。
左辺値が値に変換される場合とされない場合が上手く使い分けられているから代入が成立するわけ。
一例をあげると以下のような式の途中経過として現れる一時的な値は右辺値であるので、
単項 & を適用できずにエラーになる。
#include <stdio.h>
int main(void) {
int a=1, b=2;
printf("%p\n", &(a+b)); // a+b の結果は rvalue なので & を適用してアドレスを知ることは出来ない
}
仕様上の理屈ではアドレスをもたないものが右辺値 (rvalue) なんじゃなくて右辺値がアドレスを持たないので逆なんだが……。
たとえば
int a=1;
a=2;
というように変数に代入できるが、
1=2;
という式がおかしいことは感覚的にわかるだろう。
a には 1 が入っているんだから a を評価すれば 1 になるはずなのに 1=2; と同じではない。
このとき a は a に入っている値のことであると同時に場所としての性質を持つ。
アドレスを持たないのが右辺値であるのとは対照的にアドレスを持つ (場所としての性質を持つ) のが左辺値だ。
左辺値は現れる文脈によって「値 (右辺値)」に変換される。
左辺値が値に変換される場合とされない場合が上手く使い分けられているから代入が成立するわけ。
一例をあげると以下のような式の途中経過として現れる一時的な値は右辺値であるので、
単項 & を適用できずにエラーになる。
#include <stdio.h>
int main(void) {
int a=1, b=2;
printf("%p\n", &(a+b)); // a+b の結果は rvalue なので & を適用してアドレスを知ることは出来ない
}
173デフォルトの名無しさん (ワッチョイ cf95-kcXy)
2022/02/20(日) 10:14:14.54ID:bcGZeCSm0 >>168
int a;
&a //OK.これがlvalue
&1 //NG. これがrvalue
const int b = 1;
&b //OK.これもlvalue
b = 1; //NG. lvalueには書き込み可能でないものもある
int a;
&a //OK.これがlvalue
&1 //NG. これがrvalue
const int b = 1;
&b //OK.これもlvalue
b = 1; //NG. lvalueには書き込み可能でないものもある
174デフォルトの名無しさん (ワッチョイ 6fd5-NZH9)
2022/02/21(月) 00:31:16.06ID:Zv8l603i0 164です、ありがとうございます
以下の内容で理解しました
場所としての性質を持つのが左辺値、持たないものが右辺値
左辺値は場所としての性質を持つためアドレスを持つ
参考書には文字列リテラルと配列はアドレスを持つ右辺値だと書いてあります
誤植かもしれませんね
ちなみにですが関数も左辺値でしょうか?これもアドレスを持つ右辺値と書いてあります
以下の内容で理解しました
場所としての性質を持つのが左辺値、持たないものが右辺値
左辺値は場所としての性質を持つためアドレスを持つ
参考書には文字列リテラルと配列はアドレスを持つ右辺値だと書いてあります
誤植かもしれませんね
ちなみにですが関数も左辺値でしょうか?これもアドレスを持つ右辺値と書いてあります
175はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 133e-mA98)
2022/02/21(月) 02:00:05.75ID:B02tltHQ0 >>174
関数については関数指示子という概念があらたに登場するのでちょっとややこしくなる。
「関数そのもの」は C では値として扱うことができないので左辺値でも右辺値でもない。
式中に関数名を書くとそれは関数ポインタに型変換されて、その関数ポインタは右辺値。
関数については関数指示子という概念があらたに登場するのでちょっとややこしくなる。
「関数そのもの」は C では値として扱うことができないので左辺値でも右辺値でもない。
式中に関数名を書くとそれは関数ポインタに型変換されて、その関数ポインタは右辺値。
176はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 133e-mA98)
2022/02/21(月) 02:20:48.63ID:B02tltHQ0 ついでの補足しておくと、
普通の関数呼出しも (言語仕様の理屈の上では) 関数ポインタに変換されてから解釈されている。
有名なネタとして
(**********printf)("hello,world\n");
というように * をいくつ付けても問題なく通る。
関数指示子が関数ポインタに (暗黙に) 変換されるという規則のせいで結局は関数ポインタとして解釈されるので。
普通の関数呼出しも (言語仕様の理屈の上では) 関数ポインタに変換されてから解釈されている。
有名なネタとして
(**********printf)("hello,world\n");
というように * をいくつ付けても問題なく通る。
関数指示子が関数ポインタに (暗黙に) 変換されるという規則のせいで結局は関数ポインタとして解釈されるので。
177デフォルトの名無しさん (ワッチョイ 6fe9-9yE7)
2022/02/21(月) 15:15:43.51ID:031T4g5n0 C++だと関数も左辺値とされていて、そのことで互換性の問題が起こったりしていないので
性質の面で関数指示子は左辺値と大差無かったりする。
性質の面で関数指示子は左辺値と大差無かったりする。
178デフォルトの名無しさん (スップ Sd1f-vGHd)
2022/02/21(月) 19:49:07.11ID:gBEocJIsd 宣言された関数(のポインタ)はconst左辺値の認識でいたけどC言語だと違うのか?
typedef double(*functype)(double);
functype f;
f=sin; // 可能
sin=f; //不可能
typedef double(*functype)(double);
functype f;
f=sin; // 可能
sin=f; //不可能
179デフォルトの名無しさん (ワッチョイ cf95-kcXy)
2022/02/21(月) 20:49:24.13ID:wtPLXwv80 関数は左辺値
ただしsizeofと代入を除きポインタに変換され
そのポインタは右辺値
ただしsizeofと代入を除きポインタに変換され
そのポインタは右辺値
180デフォルトの名無しさん (ワッチョイ 6fd5-NZH9)
2022/02/21(月) 23:36:20.06ID:Zv8l603i0 関数についてまとめると、
関数そのものは右辺値でも左辺値でもない、式中の関数名は関数ポインタに変換されて右辺値になる
(C++では関数は左辺値である)
初心者なので誤植があるとパニックになりますね…
どうもありがとうございました
関数そのものは右辺値でも左辺値でもない、式中の関数名は関数ポインタに変換されて右辺値になる
(C++では関数は左辺値である)
初心者なので誤植があるとパニックになりますね…
どうもありがとうございました
181デフォルトの名無しさん (ワッチョイ 7369-F7/t)
2022/02/22(火) 12:55:52.35ID:4nLtmRUA0 C言語の範囲内なら用語に惑わされず振る舞いだけを考えれば
そこまで混乱することはないんじゃなかろうか (>>176 の例のような変態的なのはおいといて)
C++ の ムーブセマンティクスがなかなか なかなか
そこまで混乱することはないんじゃなかろうか (>>176 の例のような変態的なのはおいといて)
C++ の ムーブセマンティクスがなかなか なかなか
182デフォルトの名無しさん (ワッチョイ 83b1-hSEA)
2022/02/22(火) 13:23:00.75ID:9avL3EWo0 https://www.toyokawa.jp/
初心者すぎる質問なんだが、C言語系のループは目的に応じて1始まりにする
必要があるとブログ記事で読んだんだが、実際はどちらが良いの?
このブログにように九九を計算して配列に入れる場合に九九だから1始まりで計算して、配列へのアクセスは−1する。
今までやっていたようにゼロからループして、計算するときに+1して、配列にはそのままアクセス。
現場だと何も考えずにゼロからループし、目的に応じてオフセットさせていたけど特にコードレビューで突っ込まれた経験も無いので。
初心者すぎる質問なんだが、C言語系のループは目的に応じて1始まりにする
必要があるとブログ記事で読んだんだが、実際はどちらが良いの?
このブログにように九九を計算して配列に入れる場合に九九だから1始まりで計算して、配列へのアクセスは−1する。
今までやっていたようにゼロからループして、計算するときに+1して、配列にはそのままアクセス。
現場だと何も考えずにゼロからループし、目的に応じてオフセットさせていたけど特にコードレビューで突っ込まれた経験も無いので。
183デフォルトの名無しさん (ワッチョイ 8368-jp9+)
2022/02/22(火) 13:27:08.07ID:XXijF8a20 プログラミング初心者なんやが、まずC言語の何からすればいいんや。
初歩的な質問ですまない。
初歩的な質問ですまない。
184デフォルトの名無しさん (ワッチョイ 8368-jp9+)
2022/02/22(火) 13:27:08.07ID:XXijF8a20 プログラミング初心者なんやが、まずC言語の何からすればいいんや。
初歩的な質問ですまない。
初歩的な質問ですまない。
185デフォルトの名無しさん (ワッチョイ 83b1-hSEA)
2022/02/22(火) 13:27:23.55ID:9avL3EWo0 >>182
あと、比較するときも無意味だから<=や>=は使わずに<、>を使えば良いって指示は受けたことがある。
for(i=10;i<=20; じゃなく
for(i=10;i<21; とすれば文字が少なくなり間違えが減ると言ってた。
ただ、ブログをみると、21と言う数字は唐突なので10から20までループさせるのなら <=20を使うべきと書かれている。
どちらが正しいのか?
あと、比較するときも無意味だから<=や>=は使わずに<、>を使えば良いって指示は受けたことがある。
for(i=10;i<=20; じゃなく
for(i=10;i<21; とすれば文字が少なくなり間違えが減ると言ってた。
ただ、ブログをみると、21と言う数字は唐突なので10から20までループさせるのなら <=20を使うべきと書かれている。
どちらが正しいのか?
186デフォルトの名無しさん (スップ Sd1f-f428)
2022/02/22(火) 13:33:05.20ID:1CIJj7s5d それC言語の仕様じゃなくて現場の慣例に従うべきだろ
187デフォルトの名無しさん (ワッチョイ 7369-F7/t)
2022/02/22(火) 13:44:24.82ID:4nLtmRUA0 変数を定数と比較するなら変数を右辺にもってこいとかの
文法外のコーディングルールは郷に従え としか
文法外のコーディングルールは郷に従え としか
188デフォルトの名無しさん (スプッッ Sd1f-SN5Z)
2022/02/22(火) 14:17:27.30ID:KAmBmnWqd >>184
とりあえずHello world
これがなにか分からない場合は
カーニハン&リッチー著のプログラミング言語C
という本を何とかして手に入れろ
文庫本サイズの小さな本だが
Cの発明者が書いている本で
基本はこれでOK
とりあえずHello world
これがなにか分からない場合は
カーニハン&リッチー著のプログラミング言語C
という本を何とかして手に入れろ
文庫本サイズの小さな本だが
Cの発明者が書いている本で
基本はこれでOK
189デフォルトの名無しさん (ワッチョイ 83b1-hSEA)
2022/02/22(火) 15:24:23.33ID:9avL3EWo0 >>186
まあ、そうする
まあ、そうする
190デフォルトの名無しさん (ワッチョイ 83b1-hSEA)
2022/02/22(火) 15:29:17.78ID:9avL3EWo0 C言語の構造体ってメモリーの割当って全てで保証されているのだろうか?
ビッグエンディアン、リトリエンディアンで異なるのは分かるのだが
全てリトル、Windowsで動くとして同じなのだろうか?
昔、アプリケーションの保存データを一つの構造体に収納し、それをそのままバイナリーとして
ディスクに出力していたのだが当時から気持ち悪く思っていた。
公式ドキュメントで保証でもされていれば良いのだが。
ビッグエンディアン、リトリエンディアンで異なるのは分かるのだが
全てリトル、Windowsで動くとして同じなのだろうか?
昔、アプリケーションの保存データを一つの構造体に収納し、それをそのままバイナリーとして
ディスクに出力していたのだが当時から気持ち悪く思っていた。
公式ドキュメントで保証でもされていれば良いのだが。
191デフォルトの名無しさん (ワッチョイ 7369-F7/t)
2022/02/22(火) 16:43:25.69ID:4nLtmRUA0 実行ファイルがそのままで、実行環境のOSのを行き来するならまず変わらんだろう
ソースをコンパイルしなおした結果として同じ配置になるかどうかは使ってるコンパイラ次第
ソースを別のコンパイラでコンパイルした時も同じ配置になるかどうかは使ってるコンパイラ次第
どんな場合においてもなんとかポータビリティを維持しようとするとテキスト化する羽目になる
ソースをコンパイルしなおした結果として同じ配置になるかどうかは使ってるコンパイラ次第
ソースを別のコンパイラでコンパイルした時も同じ配置になるかどうかは使ってるコンパイラ次第
どんな場合においてもなんとかポータビリティを維持しようとするとテキスト化する羽目になる
192デフォルトの名無しさん (ワッチョイ 8363-f428)
2022/02/22(火) 17:47:31.50ID:HCzuhowO0 まあ
{
char ch0;
int int0;
}
みたいになるときは
{
char ch0;
char dummy[3];
int int0;
}
って入れてるよ俺は
{
char ch0;
int int0;
}
みたいになるときは
{
char ch0;
char dummy[3];
int int0;
}
って入れてるよ俺は
193デフォルトの名無しさん (ワッチョイ cf95-kcXy)
2022/02/22(火) 17:53:48.17ID:FDkOG5bL0 [3]というマジックナンバーがイヤ
詰め物の不定がイヤならmemsetでゼロクリアすれば済むこと
詰め物の不定がイヤならmemsetでゼロクリアすれば済むこと
194デフォルトの名無しさん (ワッチョイ cf95-kcXy)
2022/02/22(火) 17:57:32.88ID:FDkOG5bL0 エンディアンを合わせて読み書きなんて朝飯前だし
構造体を渡された関数は中でfread/fwriteを1回じゃなきゃいけないなんて縛りはナンセンス
構造体の中に構造体があるときは、その構造体の読み書きも関数化しておけば何も問題はない
構造体を渡された関数は中でfread/fwriteを1回じゃなきゃいけないなんて縛りはナンセンス
構造体の中に構造体があるときは、その構造体の読み書きも関数化しておけば何も問題はない
195デフォルトの名無しさん (ワッチョイ a301-mA98)
2022/02/22(火) 18:33:22.53ID:XFNPZHqh0 パディングの距離、何バイトでアライメントされるかを制御したいとなると
コンパイラ依存の #pragma に頼るわ
コンパイラ依存の #pragma に頼るわ
196デフォルトの名無しさん (ワッチョイ 83b1-hSEA)
2022/02/22(火) 18:40:08.78ID:9avL3EWo0 >>191
10人規模のプロジェクトだったが、構造体のデータをそのままファイル出力してた。
特にパフォーマンスを求められる部分でも無かったので、自分でマッピングして出力したかったのだが、現状できているからと言うことで却下。
ただ、気持ち悪さは残る。案の定といってもよいが、Sun Sparkが混在したときは当然問題が出たらしい。
関係ないが、そのソフトハウスって、OracleにInsertした順序でselect出来るって信じているところもあった。
実際、そうなるが気持ち悪い。
10人規模のプロジェクトだったが、構造体のデータをそのままファイル出力してた。
特にパフォーマンスを求められる部分でも無かったので、自分でマッピングして出力したかったのだが、現状できているからと言うことで却下。
ただ、気持ち悪さは残る。案の定といってもよいが、Sun Sparkが混在したときは当然問題が出たらしい。
関係ないが、そのソフトハウスって、OracleにInsertした順序でselect出来るって信じているところもあった。
実際、そうなるが気持ち悪い。
197デフォルトの名無しさん (ワッチョイ 83b1-hSEA)
2022/02/22(火) 18:52:09.49ID:9avL3EWo0 C言語で冗長化と称して同じ内容を複数の変数に書き込みバックアップをするってプロジェクトが有ったが、意味有ったのだろうか?
今でも、変数ってプログラマが意図して変更しない限り値が変わることは無いし、仮に変わったとしたらもうプログラマレベルでは対処できない問題だと思う。
あと、そんな可能性があったらループ変数だってループ中に意図せずに変わると思うが。
(ハイレベルな一般的なアプリで、OS保護下で動くもの、DMAとか他ハードウェアとメモリを共有するような低レベルな話ではない)
今でも、変数ってプログラマが意図して変更しない限り値が変わることは無いし、仮に変わったとしたらもうプログラマレベルでは対処できない問題だと思う。
あと、そんな可能性があったらループ変数だってループ中に意図せずに変わると思うが。
(ハイレベルな一般的なアプリで、OS保護下で動くもの、DMAとか他ハードウェアとメモリを共有するような低レベルな話ではない)
198デフォルトの名無しさん (ワッチョイ cfda-+91V)
2022/02/22(火) 19:02:11.86ID:pG+m+rIk0 昔、組込みやってた時は全部ではないけど特に動作中に変化すると致命的な箇所は同内容を複数の変数に保存していたことはある
製品評価でノイズ試験やサージ試験おこなっていると意外にマイコン内のメモリのデータはよく化ける
製品評価でノイズ試験やサージ試験おこなっていると意外にマイコン内のメモリのデータはよく化ける
199デフォルトの名無しさん (ワッチョイ 8363-9yE7)
2022/02/22(火) 19:03:01.04ID:6JePgkF30 疑うことを知らずに一生を終える人は幸せである
200デフォルトの名無しさん (アウアウエー Sadf-8pl8)
2022/02/22(火) 19:21:24.62ID:IWqq52SNa >>197,198
素朴な疑問なんたが、それ不一致起こしてた場合どっちが正しいと判断してたんだ?
素朴な疑問なんたが、それ不一致起こしてた場合どっちが正しいと判断してたんだ?
201はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 133e-mA98)
2022/02/22(火) 19:32:40.86ID:xH13yj0x0 >>190
言語仕様としての保証はあんまりないよ。
ABI (Application Binary Interface) と呼ばれる規格を作って同じアーキテクチャでは同じレイアウトにする通例はあるし、
既存のライブラリと組み合わせられないと不都合だからだいたいのコンパイラはそれに従ってる。
x86 (64ビットも含む) については歴史的事情で Windows はマイクロソフトが決めた ABI があって、
Windows 意外 (Linux とか BSD とか) はおおよそ System V ABI を採用してる。
で、自分が作るプログラムがターゲットにする範囲 (開発環境・実行環境) で ABI が共通ならそれでいいし、
違うなら適当に切り分けて対処するとかでも問題ない。
まあ結果的に問題なかったとしても検証せずにやってたんだとしたら良くはないけどな。
言語仕様としての保証はあんまりないよ。
ABI (Application Binary Interface) と呼ばれる規格を作って同じアーキテクチャでは同じレイアウトにする通例はあるし、
既存のライブラリと組み合わせられないと不都合だからだいたいのコンパイラはそれに従ってる。
x86 (64ビットも含む) については歴史的事情で Windows はマイクロソフトが決めた ABI があって、
Windows 意外 (Linux とか BSD とか) はおおよそ System V ABI を採用してる。
で、自分が作るプログラムがターゲットにする範囲 (開発環境・実行環境) で ABI が共通ならそれでいいし、
違うなら適当に切り分けて対処するとかでも問題ない。
まあ結果的に問題なかったとしても検証せずにやってたんだとしたら良くはないけどな。
202デフォルトの名無しさん (ワッチョイ cfda-+91V)
2022/02/22(火) 19:47:53.56ID:pG+m+rIk0203はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 133e-mA98)
2022/02/22(火) 19:51:42.70ID:xH13yj0x0 PC でもデータが化けることは思ったよりも頻繁に起きているらしい。
データ破損を検出して補正する ECC と呼ばれる機構を持ったメモリもあるんだが、
コンピュータの値下げの圧力と信頼性の高い現代のメモリでは ECC は必要ないという論から ECC を付けてない機種が増えてきてる。
でもリーナスは ECC は要るにきまってんだろという感じの発言をしてる。
https://linux.srad.jp/story/21/01/05/0240202/
実際問題として化けるんだよ、化けたことを検出したり補正したりする機構がいたるところに入ってるから
アプリケーションからは気にせずに済んでるだけで……。
データ破損を検出して補正する ECC と呼ばれる機構を持ったメモリもあるんだが、
コンピュータの値下げの圧力と信頼性の高い現代のメモリでは ECC は必要ないという論から ECC を付けてない機種が増えてきてる。
でもリーナスは ECC は要るにきまってんだろという感じの発言をしてる。
https://linux.srad.jp/story/21/01/05/0240202/
実際問題として化けるんだよ、化けたことを検出したり補正したりする機構がいたるところに入ってるから
アプリケーションからは気にせずに済んでるだけで……。
204デフォルトの名無しさん (ガラプー KKff-Ix28)
2022/02/22(火) 20:27:20.57ID:x7wwxQmEK >>192
よく見かける手法だな。ただ、後からメンバー追加したのか以下のようなアホな事になっている件もたまにあるw
{
char ch0;
char ch1;
char dummy[3];
int int0;
}
よく見かける手法だな。ただ、後からメンバー追加したのか以下のようなアホな事になっている件もたまにあるw
{
char ch0;
char ch1;
char dummy[3];
int int0;
}
205デフォルトの名無しさん (テテンテンテン MM7f-IjML)
2022/02/22(火) 20:27:50.66ID:affn0mKeM 「メルキオール (MELCHIOR)」「バルタザール (BALTHASAR)」
「カスパー (CASPER)」 という3つの独立したシステムによる
合議制をとっていた。
「カスパー (CASPER)」 という3つの独立したシステムによる
合議制をとっていた。
206デフォルトの名無しさん (アウアウエー Sadf-8pl8)
2022/02/22(火) 20:56:32.44ID:IWqq52SNa207デフォルトの名無しさん (ドコグロ MMff-bFjU)
2022/02/22(火) 21:00:04.31ID:mN73zrRIM >>204
コンパイラによるけど警告レベル上げれば検出できるぞ
コンパイラによるけど警告レベル上げれば検出できるぞ
208デフォルトの名無しさん (ワッチョイ 83b1-hSEA)
2022/02/22(火) 21:02:51.52ID:9avL3EWo0209デフォルトの名無しさん (ワッチョイ 83b1-hSEA)
2022/02/22(火) 21:10:15.11ID:9avL3EWo0 >>203
>>アプリケーションからは気にせずに済んでるだけで……
なのでOSで保護された上で動くアプリケーションはデータの冗長化は必要ないのでは?
というか、データを冗長化するという方針で作られたシステムもいわゆる神経質という
設計思想があり。 データ認定?された物は3重化されて変数に保管されるが
ループのi,j,kや一時的にデータを取得するaと言った変数は多重化されていなかった。
仮に変数の冗長化が重要だと言うことになった場合。なぜデータ認定されたものだけ冗長化され
ループ変数は冗長化せずに単体で使うのかって部分に気持ち悪さを感じる。
どの変数も「平等に」食らう可能性はあると思うから。
>>アプリケーションからは気にせずに済んでるだけで……
なのでOSで保護された上で動くアプリケーションはデータの冗長化は必要ないのでは?
というか、データを冗長化するという方針で作られたシステムもいわゆる神経質という
設計思想があり。 データ認定?された物は3重化されて変数に保管されるが
ループのi,j,kや一時的にデータを取得するaと言った変数は多重化されていなかった。
仮に変数の冗長化が重要だと言うことになった場合。なぜデータ認定されたものだけ冗長化され
ループ変数は冗長化せずに単体で使うのかって部分に気持ち悪さを感じる。
どの変数も「平等に」食らう可能性はあると思うから。
210デフォルトの名無しさん (ワッチョイ 83b1-hSEA)
2022/02/22(火) 21:17:01.78ID:9avL3EWo0 >>201
「変数をバイナリーでファイルに出力する」と聞いてリーダーに求めたのは
メモリーマップ。当然、準備しているものだと思っていた。
ただ、メモリーマップなど知らないし意味も分からない、サンプルを見てくれ?
という指示だった。
バイナリーでのデータ交換をするのにメモリーマップを定めないことに関しては今でも気持ち悪さを感じている。
「変数をバイナリーでファイルに出力する」と聞いてリーダーに求めたのは
メモリーマップ。当然、準備しているものだと思っていた。
ただ、メモリーマップなど知らないし意味も分からない、サンプルを見てくれ?
という指示だった。
バイナリーでのデータ交換をするのにメモリーマップを定めないことに関しては今でも気持ち悪さを感じている。
211はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 133e-mA98)
2022/02/22(火) 21:27:02.48ID:xH13yj0x0 >>209
> OSで保護された上で動くアプリケーションは
OS では解決できない。 だからリーナスはインテルにマジムカという話。
変数を何か所にも増やすのが意味ないというのは、それはそう。
どうやったってどうにもならんので考えるだけ無駄。
職人技でどうにかできるような規模の小さな組み込み分野ならともかく、
複雑高度なコンピュータで低レイヤが信頼できないなら信頼できない箇所にコストをかけて改善すべき。
> OSで保護された上で動くアプリケーションは
OS では解決できない。 だからリーナスはインテルにマジムカという話。
変数を何か所にも増やすのが意味ないというのは、それはそう。
どうやったってどうにもならんので考えるだけ無駄。
職人技でどうにかできるような規模の小さな組み込み分野ならともかく、
複雑高度なコンピュータで低レイヤが信頼できないなら信頼できない箇所にコストをかけて改善すべき。
212デフォルトの名無しさん (アウアウエー Sadf-8pl8)
2022/02/22(火) 21:56:15.32ID:ntDF8W1ma213デフォルトの名無しさん (スップ Sd1f-vGHd)
2022/02/22(火) 21:59:25.84ID:fFHtSmjBd >>209
ハードウェアエラーが原因ならプログラムの実行バイナリも平等に化ける可能性あるよね
ハードウェアエラーが原因ならプログラムの実行バイナリも平等に化ける可能性あるよね
214デフォルトの名無しさん (ワッチョイ cf95-kcXy)
2022/02/22(火) 22:00:17.02ID:FDkOG5bL0215デフォルトの名無しさん (ワッチョイ 8363-9yE7)
2022/02/22(火) 22:07:46.87ID:6JePgkF30 アポロ計画だったか、3台のコンピュータに計算させて多数決で決めてたな
216デフォルトの名無しさん (ワッチョイ 8363-9yE7)
2022/02/22(火) 22:18:57.41ID:6JePgkF30 それとCのようにロジックが追え、時間さえあれば
人でも答えが出せる場合ではなく、
AIシステムのようにブラックボックス化していると、
複数台による合議制もあるかも知れない
人でも答えが出せる場合ではなく、
AIシステムのようにブラックボックス化していると、
複数台による合議制もあるかも知れない
217はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 133e-mA98)
2022/02/22(火) 22:31:59.79ID:xH13yj0x0 深層学習ってニューラルネットワークを多層構造にしたモデルなんだよね。
AI の仕組みの中に (重みづけされた) 多数決が既に組み込まれていると言えなくもない。
AI の仕組みの中に (重みづけされた) 多数決が既に組み込まれていると言えなくもない。
218デフォルトの名無しさん (ワッチョイ 83b1-hSEA)
2022/02/22(火) 23:00:22.43ID:9avL3EWo0■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【維新】吉村知事「中国人観光客だけに頼るビジネスモデル変えていかないといけない」「高市総理の発言は撤回する必要はない」 [Hitzeschleier★]
- 【社会】40代以上のおじさん・おばさんは叩いてオッケーという風潮はなぜ加速したのか [七波羅探題★]
- 自分に自信がない女の子、陽キャ美容室で80cmのエクステを付けた結果wwwwwwwwwwwwwwwwwww [329329848]
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 外務省局長、よくわからないまま帰国へ [834922174]
- 【実況】博衣こよりのえちえち歌枠🧪
- 【朗報】外務省局長、中国側の要求を断固拒否。「高市さんの答弁は日本政府の立場を変えるものではないし、撤回しない」 [519511584]
- 農林水産省「春頃にはコメ価格落ち着くのでは」新米の取引価格、過去最高を更新。 [256556981]
