!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/
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言語なら俺に聞け 155
https://mevius.5ch.net/test/read.cgi/tech/1589120427/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
C言語なら俺に聞け 156
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 9bb7-/QqT)
2020/09/28(月) 14:41:30.00ID:QxfbhGyV0156デフォルトの名無しさん (ブーイモ MM4f-yjnQ)
2020/10/14(水) 01:22:34.34ID:6pvowPnvM どうなって欲しくてどうなってしまうかくらい書け
157デフォルトの名無しさん (ササクッテロル Sp0f-bZax)
2020/10/14(水) 02:05:50.62ID:9cyhkhnyp 14と表示されてほしいのですが実行すると以下の画像のようになります
https://i.imgur.com/ztqzJy1.jpg
https://i.imgur.com/ztqzJy1.jpg
158デフォルトの名無しさん (オイコラミネオ MM8f-QI1E)
2020/10/14(水) 03:22:45.65ID:GZXcc9JpM >>151
出題者が想定していた回答から察するに、「正しい答えを選べ」=「最適なものを選べ」という題意なんだろうね。
「エ」の場合、009〜012が必ず実行される。
「ウ」の場合、空白が連続していない場合のみ、009〜012が実行される。
なので「エ」よりも「ウ」の方が、実行時のコードが少なくなる可能性≒処理速度が速い≒より最適化されている。
ということで、「エ」を排しても「ウ」が選ばれるべき理由は説明できるけど、その逆は説明できそうになさげ
出題者が想定していた回答から察するに、「正しい答えを選べ」=「最適なものを選べ」という題意なんだろうね。
「エ」の場合、009〜012が必ず実行される。
「ウ」の場合、空白が連続していない場合のみ、009〜012が実行される。
なので「エ」よりも「ウ」の方が、実行時のコードが少なくなる可能性≒処理速度が速い≒より最適化されている。
ということで、「エ」を排しても「ウ」が選ばれるべき理由は説明できるけど、その逆は説明できそうになさげ
159デフォルトの名無しさん (オイコラミネオ MM8f-QI1E)
2020/10/14(水) 05:08:01.62ID:GZXcc9JpM160デフォルトの名無しさん (ワッチョイ 5b2c-F9zC)
2020/10/14(水) 05:26:43.66ID:z5Uy/Vd30 画像でコードを見せられても、テストできない
paiza.IO などに書いて下さい!
paiza.IO などに書いて下さい!
161デフォルトの名無しさん (ワッチョイ 9f93-ntOo)
2020/10/14(水) 06:30:51.16ID:8SMXEVrO0162デフォルトの名無しさん (ワッチョイ 9fa5-51Mc)
2020/10/14(水) 10:47:06.71ID:ssGc8zMA0 >>151
クソみたいなマルチポスト野郎だな
俺らはこういうゴミに手を貸してたのか
騙された気分だ
C言語について質問です。平成6年度基本情報技術者試験のC言語につ... - Yahoo!知恵袋
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12232834992
クソみたいなマルチポスト野郎だな
俺らはこういうゴミに手を貸してたのか
騙された気分だ
C言語について質問です。平成6年度基本情報技術者試験のC言語につ... - Yahoo!知恵袋
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12232834992
163デフォルトの名無しさん (テテンテンテン MM7f-Eh3t)
2020/10/14(水) 11:51:52.20ID:+mJN3MGTM >>155
https://file3-d.kuku.lu/files/20201014-0239_c7aaeee8e9128bbdf0223997ba9de974.jpeg
#include <stdio.h>
int fact(int n){
if(n==1)return 1;
return n*fact(n-1);
}
int main(void){
int n=1,a=0;
while( (a+=fact(n)) <= 1000 ) n++;
printf("%d", n);
}
普通に7って出たけど?
https://file3-d.kuku.lu/files/20201014-0239_d20849c5db09546cee5a312db4c7b83e.jpeg
https://file3-d.kuku.lu/files/20201014-0239_c7aaeee8e9128bbdf0223997ba9de974.jpeg
#include <stdio.h>
int fact(int n){
if(n==1)return 1;
return n*fact(n-1);
}
int main(void){
int n=1,a=0;
while( (a+=fact(n)) <= 1000 ) n++;
printf("%d", n);
}
普通に7って出たけど?
https://file3-d.kuku.lu/files/20201014-0239_d20849c5db09546cee5a312db4c7b83e.jpeg
164デフォルトの名無しさん (ササクッテロル Sp0f-+cNN)
2020/10/14(水) 13:06:19.00ID:8/BbynCKp >>163
試したら7になりました、ありがとうございます
試したら7になりました、ありがとうございます
165デフォルトの名無しさん (ワッチョイ efad-kK2i)
2020/10/20(火) 01:13:51.72ID:1WZYXiCK0 >>163
インデントがキモい
インデントがキモい
166デフォルトの名無しさん (アウアウウー Sacf-dvF1)
2020/10/20(火) 08:49:06.08ID:q8Z69frHa systemのパスが通らない
ファイルに入力して
コンソールで表示する
プログラムだが
ファイルと同じパスでエラー
当方初心者
ファイルに入力して
コンソールで表示する
プログラムだが
ファイルと同じパスでエラー
当方初心者
167デフォルトの名無しさん (ワッチョイ fbda-b6U/)
2020/10/20(火) 08:55:48.28ID:0IrscxF80 まずはその日本語をなんとかしろ
168デフォルトの名無しさん (ワッチョイ dbb7-fMdf)
2020/10/20(火) 09:22:30.31ID:wzOsKsv00 >>166
パスって何か知ってる限り書いてみな
パスって何か知ってる限り書いてみな
169デフォルトの名無しさん (テテンテンテン MM7f-Eh3t)
2020/10/20(火) 10:05:35.78ID:qYYfNILyM >>165
んな事言われましても一応、HTML系の書き方なんで
https://ja.m.wikipedia.org/wiki/字下げスタイル
bannerスタイルは、ブロックのヘッダ部だけを字下げレベルで特別に目立たせるスタイルである。
ちょうど、K&Rスタイルでブロックの終わりの中括弧の字下げレベルを戻さないスタイルである。
んな事言われましても一応、HTML系の書き方なんで
https://ja.m.wikipedia.org/wiki/字下げスタイル
bannerスタイルは、ブロックのヘッダ部だけを字下げレベルで特別に目立たせるスタイルである。
ちょうど、K&Rスタイルでブロックの終わりの中括弧の字下げレベルを戻さないスタイルである。
170デフォルトの名無しさん (ワッチョイ dbb7-fMdf)
2020/10/20(火) 10:22:20.38ID:wzOsKsv00 どっちもどっちだ
自分のスタイルと違うだけでキモいとか言い出すやつも
自分のスタイルを気に入らない人に言い訳するやつも
協調性を欠くという点で同じだ
プロジェクトに参入するたびに顰蹙かうやつ
自分のスタイルと違うだけでキモいとか言い出すやつも
自分のスタイルを気に入らない人に言い訳するやつも
協調性を欠くという点で同じだ
プロジェクトに参入するたびに顰蹙かうやつ
171デフォルトの名無しさん (テテンテンテン MM7f-Eh3t)
2020/10/20(火) 10:32:37.64ID:qYYfNILyM 追い訳しますけど、質問者が読みやすいように
質問者のスタイルに合わせてあげたという事も忘れないで頂きたい。
質問者のスタイルに合わせてあげたという事も忘れないで頂きたい。
172デフォルトの名無しさん (JP 0H8f-yjnQ)
2020/10/20(火) 10:49:54.94ID:2QIfR1k/H 質問者がそのスタイル使ったのは最後の行だけだ
意図して使っているわけではないのに無駄にマイナーなスタイルで答えるな
意図して使っているわけではないのに無駄にマイナーなスタイルで答えるな
173デフォルトの名無しさん (ワイーワ2 FF3f-Vszw)
2020/10/20(火) 10:51:18.57ID:pHiz9StDF174デフォルトの名無しさん (ワッチョイ 0fd2-fMdf)
2020/10/20(火) 11:18:11.29ID:69CHk5Nl0 ここでは俺が無法者だ!!
175デフォルトの名無しさん (ワッチョイ 5b2c-UsEC)
2020/10/20(火) 15:12:59.44ID:aEz3U6LC0 環境変数PATH なら、; 区切り。
PowerShell で以下を入力してみ
$env:Path.split( ";" )
PowerShell で以下を入力してみ
$env:Path.split( ";" )
176デフォルトの名無しさん (ワッチョイ 89e6-w+A7)
2020/10/21(水) 10:15:31.31ID:KGhWJPjI0 >>172
このスレにコーディング規約がある訳じゃないんだからスタイルは回答者の自由だが
このスレにコーディング規約がある訳じゃないんだからスタイルは回答者の自由だが
177デフォルトの名無しさん (ワッチョイ 02a5-F5SX)
2020/10/21(水) 10:45:56.94ID:CZ2/iovY0 わかったわかった
お前はキモい、もうそれでいいよ
キモいことを自覚してそのスタイルを使い続けてくれ
心理的にダメ、気持ち悪いんだよお前
お前はキモい、もうそれでいいよ
キモいことを自覚してそのスタイルを使い続けてくれ
心理的にダメ、気持ち悪いんだよお前
178デフォルトの名無しさん (ブーイモ MM76-mN35)
2020/10/21(水) 11:02:14.79ID:nW5Wnc+BM おまえツイッターでも文脈見ずにクソリプばっかりしてるだろ
179デフォルトの名無しさん (ワッチョイ 65b7-tMQb)
2020/10/21(水) 12:17:24.48ID:EPxGxCCv0 MinGWをインスコしてあれば
path | sed "s/[=;]/\n/g"
path | sed "s/[=;]/\n/g"
180デフォルトの名無しさん (ワッチョイ 6d61-hFPD)
2020/10/21(水) 16:41:05.37ID:gYHxZT9P0 >>155
エラーメッセージからするとmain()関数内部でfact()関数の宣言を
書いていることが原因らしい。
素朴なCだと、そう書くとまだ名前が宣言されて無いグローバル関数を
main()関数内部で使えるようにする意味になるが、現在のC/C++だと
それぞれのコンパイラが独自に拡張したりした結果、
「(関数内部における)内部関数」なるものが使えるコンパイラが出てきたため、
意味が違ってしまっていることがある。
今の例の場合、main関数の中で後から定義するfactという名前の関数を先に
宣言する意味だとコンパイラは認識してしまっている可能性が高い。
だから、main関数の中にfact関数の関数定義が書かれて無いのでそのような
エラーが出る。
もし、素朴なCのプロトタイプ宣言にしたい場合、
main()関数の外側に書くのが普通だが、なんらかの事情でmain()関数の内側に
書きたい場合には、
int main(void){
extern int fact(int n);
・・・
}
のようにexternキーワードを書くと通ることがあるかも知れない。
エラーメッセージからするとmain()関数内部でfact()関数の宣言を
書いていることが原因らしい。
素朴なCだと、そう書くとまだ名前が宣言されて無いグローバル関数を
main()関数内部で使えるようにする意味になるが、現在のC/C++だと
それぞれのコンパイラが独自に拡張したりした結果、
「(関数内部における)内部関数」なるものが使えるコンパイラが出てきたため、
意味が違ってしまっていることがある。
今の例の場合、main関数の中で後から定義するfactという名前の関数を先に
宣言する意味だとコンパイラは認識してしまっている可能性が高い。
だから、main関数の中にfact関数の関数定義が書かれて無いのでそのような
エラーが出る。
もし、素朴なCのプロトタイプ宣言にしたい場合、
main()関数の外側に書くのが普通だが、なんらかの事情でmain()関数の内側に
書きたい場合には、
int main(void){
extern int fact(int n);
・・・
}
のようにexternキーワードを書くと通ることがあるかも知れない。
181デフォルトの名無しさん (ワッチョイ 65b7-tMQb)
2020/10/21(水) 16:52:54.92ID:EPxGxCCv0 関数のブロック内に関数原型があるのは完全に合法
実用上まず使わないけどね
実用上まず使わないけどね
182デフォルトの名無しさん (ワッチョイ 6d61-hFPD)
2020/10/21(水) 17:02:00.07ID:gYHxZT9P0183デフォルトの名無しさん (ワッチョイ 65b7-tMQb)
2020/10/21(水) 17:14:09.48ID:EPxGxCCv0 日本語でおk
184蟻人間 ◆T6xkBnTXz7B0 (スフッ Sda2-IaiW)
2020/10/21(水) 17:17:08.30ID:vNonm69Zd >>182さん、思い込みが激しすぎて証拠がないのに持論を主張する。
185デフォルトの名無しさん (ワッチョイ 6d61-hFPD)
2020/10/21(水) 17:58:35.70ID:gYHxZT9P0 gccなんかは関数の中に内部関数を作れる。
だから、関数内でプロトタイプ宣言を書くと元定義の pure Cとは
異なった意味になる可能性が高い。
だから、関数内でプロトタイプ宣言を書くと元定義の pure Cとは
異なった意味になる可能性が高い。
186デフォルトの名無しさん (ワッチョイ 6d61-hFPD)
2020/10/21(水) 18:02:50.56ID:gYHxZT9P0 >>184
現にその宣言が無ければコンパイルが通り、有ればエラーになっている。
それが一つの根拠。
実験してみたわけじゃないがそれらが本当におきているとすれば
入れ子関数(内部関数)の独自拡張が原因だと洞察できる。
現にその宣言が無ければコンパイルが通り、有ればエラーになっている。
それが一つの根拠。
実験してみたわけじゃないがそれらが本当におきているとすれば
入れ子関数(内部関数)の独自拡張が原因だと洞察できる。
188デフォルトの名無しさん (ワッチョイ 6d61-hFPD)
2020/10/21(水) 18:11:05.50ID:gYHxZT9P0 他の人の実験結果から推定しているだけだから、事実かどうかは分からんよ。
189蟻人間 ◆T6xkBnTXz7B0 (スフッ Sda2-IaiW)
2020/10/21(水) 18:23:13.18ID:vNonm69Zd モバイルCっつー奴にバグ報告せよ。
190デフォルトの名無しさん (ワッチョイ 6d61-hFPD)
2020/10/21(水) 18:35:10.36ID:gYHxZT9P0 PythonやLuaもサポートしているが、Clang, LLVMという言葉があった。
使ってるコンパイラはClangなのかな?
使ってるコンパイラはClangなのかな?
191デフォルトの名無しさん (アウアウウー Sa45-DB4w)
2020/10/21(水) 20:31:51.31ID:z1b04ciPa 簡単な質問申し訳ないです。
漢字を文字コードにて受け
putcで標準出力できるかな?
漢字を文字コードにて受け
putcで標準出力できるかな?
192デフォルトの名無しさん (ブーイモ MM76-mQ82)
2020/10/21(水) 20:57:42.76ID:GehgBoqYM もちろんできるけど、
入力される文字コードの種類と出力する文字の符号化方式は何にしたいか分かってるの?
入力される文字コードの種類と出力する文字の符号化方式は何にしたいか分かってるの?
193デフォルトの名無しさん (ラクッペペ MMe6-4R9W)
2020/10/21(水) 21:05:35.53ID:Cabs0W0/M 文字が文字コードで扱われるのは普通の事だ
画像とかではないなら
画像とかではないなら
194デフォルトの名無しさん (ワッチョイ 6247-YvdE)
2020/10/21(水) 22:53:14.42ID:sHBY55kz0 putw
putwc
putwc
195蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ 3901-IaiW)
2020/10/21(水) 23:01:37.11ID:T/uvMZ2i0 全角文字はマルチバイト文字かUnicode文字。
196デフォルトの名無しさん (ワッチョイ 0d01-LA9s)
2020/10/22(木) 04:18:40.19ID:OxqRNNZs0 フリーランス向け報酬即日払いサービス『先払い』が、オンライン資金調達プラットフォーム『資金調達freee』β版に掲載開始
https://prtimes.jp/main/html/rd/p/000000037.000047439.html
フリーランスやパラレルワーカー同士のマッチングプラットフォーム「conema」が、
案件依頼・仲間募集を中心とした掲示板機能(β版)をリリース!
https://prtimes.jp/main/html/rd/p/000000004.000059389.html
フリーランス薬剤師専門エージェントサービス「きょうりょく薬剤師」、リリース開始。薬剤師の新しい働き方を提唱。
https://prtimes.jp/main/html/rd/p/000000002.000058526.html
中卒、新聞配達員から月収4億の不動産王へ。姫路の不動産王の投資哲学
https://hbol.jp/184178
【アプリ開発で起業】必要な心得とマネタイズ方法のすべて
https://www.dreamgate.gr.jp/contents/column/application-development
副業を認める企業に対して「より魅力的に感じる」人は6割以上。
一方、副業を認めない企業に対する魅力度は6割超が「低下した」と回答
https://prtimes.jp/main/html/rd/p/000000016.000040832.html
みんなが知らない「サラリーマンの生存戦略」副業年収1億円!motoさん伝授
https://diamond.jp/articles/-/247070
https://prtimes.jp/main/html/rd/p/000000037.000047439.html
フリーランスやパラレルワーカー同士のマッチングプラットフォーム「conema」が、
案件依頼・仲間募集を中心とした掲示板機能(β版)をリリース!
https://prtimes.jp/main/html/rd/p/000000004.000059389.html
フリーランス薬剤師専門エージェントサービス「きょうりょく薬剤師」、リリース開始。薬剤師の新しい働き方を提唱。
https://prtimes.jp/main/html/rd/p/000000002.000058526.html
中卒、新聞配達員から月収4億の不動産王へ。姫路の不動産王の投資哲学
https://hbol.jp/184178
【アプリ開発で起業】必要な心得とマネタイズ方法のすべて
https://www.dreamgate.gr.jp/contents/column/application-development
副業を認める企業に対して「より魅力的に感じる」人は6割以上。
一方、副業を認めない企業に対する魅力度は6割超が「低下した」と回答
https://prtimes.jp/main/html/rd/p/000000016.000040832.html
みんなが知らない「サラリーマンの生存戦略」副業年収1億円!motoさん伝授
https://diamond.jp/articles/-/247070
197デフォルトの名無しさん (ワッチョイ 2101-LA9s)
2020/10/24(土) 23:58:39.57ID:3PXn8xmW0 なぜ
int* a = 0;
*(PBYTE*)&a += 5;
は動作するのに
int* a = 0;
(PBYTE)a += 5;
はエラーになるのですか?
int* a = 0;
*(PBYTE*)&a += 5;
は動作するのに
int* a = 0;
(PBYTE)a += 5;
はエラーになるのですか?
198デフォルトの名無しさん (ワッチョイ e963-gGz3)
2020/10/25(日) 00:02:11.04ID:TZHfVi9W0199デフォルトの名無しさん (ワッチョイ 2101-LA9s)
2020/10/25(日) 00:12:03.26ID:5nJTYzvV0 >>198
キャストしているとはいえ、ポインタaに加算していると思うのですが、、
ポインタはアドレス0を指しているので、加算することによってアドレス5を参照したいのですが
なぜかエラーが出てしまうのかわかりません..
キャストしているとはいえ、ポインタaに加算していると思うのですが、、
ポインタはアドレス0を指しているので、加算することによってアドレス5を参照したいのですが
なぜかエラーが出てしまうのかわかりません..
200デフォルトの名無しさん (ワッチョイ 02f9-3XbD)
2020/10/25(日) 00:42:02.50ID:LNYSWk6n0 それだけじゃ参照してないしエラーなんてならなそうだけど
いつどんなエラーになるの?
参照した時?なら、5番地を読んでいい環境なの?
windowsやlinux等高級なOS上なら、絶対番地を勝手に読んじゃダメだよ
いつどんなエラーになるの?
参照した時?なら、5番地を読んでいい環境なの?
windowsやlinux等高級なOS上なら、絶対番地を勝手に読んじゃダメだよ
201デフォルトの名無しさん (ワッチョイ e963-gGz3)
2020/10/25(日) 00:46:43.39ID:TZHfVi9W0 (PBYTE)a は 変数ではなく、値になる
202デフォルトの名無しさん (ワッチョイ 2101-LA9s)
2020/10/25(日) 00:51:22.10ID:5nJTYzvV0 >>200
コンパイルエラーになるんです。
エラー内容は"式は変更可能な左辺値である必要があります"です。
このコードはここに投稿するためのテストのために書いたコードなので、
参照関係の問題は理解しています。
*(PBYTE*)&a += 5;
と
(PBYTE)a += 5;
はやってることは同じと思うのですが、なぜエラーになるのかなと。
そういうものとして理解するしかないのでしょうかね
コンパイルエラーになるんです。
エラー内容は"式は変更可能な左辺値である必要があります"です。
このコードはここに投稿するためのテストのために書いたコードなので、
参照関係の問題は理解しています。
*(PBYTE*)&a += 5;
と
(PBYTE)a += 5;
はやってることは同じと思うのですが、なぜエラーになるのかなと。
そういうものとして理解するしかないのでしょうかね
203デフォルトの名無しさん (ワッチョイ e963-gGz3)
2020/10/25(日) 00:57:14.44ID:TZHfVi9W0 *(PBYTE*)&a =
変数aの現在の値を&で取り出し、
それをポインタ値として扱い、
そのポインタ値が指し示すところに代入する
ということじゃないかな
変数aの現在の値を&で取り出し、
それをポインタ値として扱い、
そのポインタ値が指し示すところに代入する
ということじゃないかな
204デフォルトの名無しさん (ブーイモ MM76-mN35)
2020/10/25(日) 01:18:53.38ID:TWzqhGL8M (PBYTE)a みたいにキャストすると、値の解釈の変更ということになり、
代入先(左辺値)にはできなくなる。
int i;
(float)i = 1.1;
って意味あると思う?
代入先(左辺値)にはできなくなる。
int i;
(float)i = 1.1;
って意味あると思う?
205デフォルトの名無しさん (ワッチョイ 2101-LA9s)
2020/10/25(日) 01:33:16.78ID:5nJTYzvV0 あ〜〜 なるほど
floatなどの小数点以下を扱う型は以下のようにdが1になる特別な仕様があるから
そのためにエラーになるようになってるんですかね。
float c = 1.5f;
int d = (int)c;
int e = *(int*)&c;
この場合、dは1になるけど、eは1069547520になるから、
エラーになる現象はこれと近いのかな
この解釈であってるのだろうか
floatなどの小数点以下を扱う型は以下のようにdが1になる特別な仕様があるから
そのためにエラーになるようになってるんですかね。
float c = 1.5f;
int d = (int)c;
int e = *(int*)&c;
この場合、dは1になるけど、eは1069547520になるから、
エラーになる現象はこれと近いのかな
この解釈であってるのだろうか
206デフォルトの名無しさん (ブーイモ MM76-mN35)
2020/10/25(日) 01:35:55.99ID:TWzqhGL8M それそれ。
それ追記しようとしてた。
それ追記しようとしてた。
207デフォルトの名無しさん (ワッチョイ 2101-50og)
2020/10/25(日) 01:54:40.07ID:5nJTYzvV0 とはいえ
int i;
(float)i = 1.1;
これはiを一時的にfloatにキャストしてるだけだから、エラーにせずにiは1として動作させるとこはできなかったんだろうか
int i;
(float)i = 1.1;
これはiを一時的にfloatにキャストしてるだけだから、エラーにせずにiは1として動作させるとこはできなかったんだろうか
208デフォルトの名無しさん (ワッチョイ c6e9-tMQb)
2020/10/25(日) 02:21:39.27ID:COZe3KfC0209デフォルトの名無しさん (ワッチョイ 2101-50og)
2020/10/25(日) 02:57:11.72ID:5nJTYzvV0 >>208
そもそもなぜコンパイラがこれをエラーと捉えるのかというのがわからないと言う意味で言っておりました。
そもそもなぜコンパイラがこれをエラーと捉えるのかというのがわからないと言う意味で言っておりました。
210デフォルトの名無しさん (ワッチョイ c6e9-tMQb)
2020/10/25(日) 03:00:35.23ID:COZe3KfC0211デフォルトの名無しさん (ワッチョイ c6e9-tMQb)
2020/10/25(日) 03:18:58.54ID:COZe3KfC0212デフォルトの名無しさん (ワッチョイ 21da-gGz3)
2020/10/25(日) 03:28:10.91ID:UGl+6vH40 >>202
キャストの結果は常に右辺値
右辺値を代入してるから右辺値には代入出来ないというエラーが出る
ポインタのデリファレンスの結果は左辺値なので代入も問題ない
あとエスパーするにPBYTEってuint8_t (unsigned char)なんだろうけど(それ以外の場合はデリファレンスの結果が未定義),
> *(PBYTE*)&a += 5;
はint型の先頭バイトを書き換えたいという意図で,
> (PBYTE)a += 5;
こっちはメモリのどの位置を書き換えたいのか自明じゃないからやってること自体全く異なる
キャストの結果は常に右辺値
右辺値を代入してるから右辺値には代入出来ないというエラーが出る
ポインタのデリファレンスの結果は左辺値なので代入も問題ない
あとエスパーするにPBYTEってuint8_t (unsigned char)なんだろうけど(それ以外の場合はデリファレンスの結果が未定義),
> *(PBYTE*)&a += 5;
はint型の先頭バイトを書き換えたいという意図で,
> (PBYTE)a += 5;
こっちはメモリのどの位置を書き換えたいのか自明じゃないからやってること自体全く異なる
213デフォルトの名無しさん (ワッチョイ 65b7-tMQb)
2020/10/25(日) 08:17:29.39ID:B8Qi0Gue0 キャスト式の結果は左辺値ではない
間接演算式の結果は左辺値となる
これだけのことだろ
間接演算式の結果は左辺値となる
これだけのことだろ
214はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c63e-3XbD)
2020/10/25(日) 09:56:54.64ID:63196X630 gcc3 の頃までは cast-as-lvalue が有ったけど 4 になるときに廃止された。
古いコードでこの機能をあてにしているものはあるかもね。
古いコードでこの機能をあてにしているものはあるかもね。
215デフォルトの名無しさん (ワッチョイ fd5f-Naer)
2020/10/25(日) 13:18:04.05ID:FzqccguI0 >>197
(PBYTE)*a += 5;
(PBYTE)*a += 5;
216デフォルトの名無しさん (ワッチョイ fd5f-Naer)
2020/10/25(日) 13:19:58.42ID:FzqccguI0 >>202
答えだけ言うとやってることが同じではない
答えだけ言うとやってることが同じではない
217デフォルトの名無しさん (ワッチョイ 2101-LA9s)
2020/10/25(日) 16:44:12.86ID:5nJTYzvV0218デフォルトの名無しさん (ワッチョイ fd5f-YvdE)
2020/10/25(日) 16:58:46.13ID:FzqccguI0 (PBYTE *) って (BYTE **) のことか
それなら同じじゃないな
っていうか「左辺値が変更出来ない型になってる」
これでこの話は終わり
それなら同じじゃないな
っていうか「左辺値が変更出来ない型になってる」
これでこの話は終わり
219デフォルトの名無しさん (ワッチョイ 6252-OGcW)
2020/10/25(日) 17:29:39.65ID:0u/0rMBT0 それなら「左辺値」ではなく「左辺」だろう
220はちみつ餃子 ◆8X2XSCHEME (ワッチョイ c63e-3XbD)
2020/10/25(日) 18:23:36.88ID:63196X630 >>217
型とは独立して (一部関係もあるが) lvalue (左辺値) と rvalue (右辺値) という概念があるってのは理解できてる?
たとえば
int x=5;
x = 2;
と書いたら OK だけど
5 = 2;
と書いたらもちろん NG だというのはわかるよね。
変数は評価したら値が出てくるけどそれとは別に場所としての性質も持ってる。
場所と値としての性質を併せ持っているのが lvalue なんだ。
で、キャスト演算子を適用するというのは取り出した値に対して型変換することになるので、
型変換した結果は場所としての性質が失われてしまう。
つまり lvalue ではなく rvalue になってしまってこれは代入先としては有効ではない。
---- 余談 ----
実際には代入先は lvalue の中でも特に modifiable lvalue (変更可能な左辺値) である必要があって
そのあたりの詳細は 6.3.2.1 あたりに記述がある。
http://kikakurui.com/x3/X3010-2003-01.html#page38-div
型とは独立して (一部関係もあるが) lvalue (左辺値) と rvalue (右辺値) という概念があるってのは理解できてる?
たとえば
int x=5;
x = 2;
と書いたら OK だけど
5 = 2;
と書いたらもちろん NG だというのはわかるよね。
変数は評価したら値が出てくるけどそれとは別に場所としての性質も持ってる。
場所と値としての性質を併せ持っているのが lvalue なんだ。
で、キャスト演算子を適用するというのは取り出した値に対して型変換することになるので、
型変換した結果は場所としての性質が失われてしまう。
つまり lvalue ではなく rvalue になってしまってこれは代入先としては有効ではない。
---- 余談 ----
実際には代入先は lvalue の中でも特に modifiable lvalue (変更可能な左辺値) である必要があって
そのあたりの詳細は 6.3.2.1 あたりに記述がある。
http://kikakurui.com/x3/X3010-2003-01.html#page38-div
221デフォルトの名無しさん (ワッチョイ 82ad-EeCs)
2020/10/26(月) 03:47:15.23ID:zDyo5E1K0 >>191
出力する端末が漢字を出すような端末で、尚且つその端末で漢字とされるコードを引き渡すのであれば出る。
しかしメジャーな文字コード体系で1バイトだけで漢字を表すようなものはなく、そういった端末も(おそらく自作しない限りは)ないだろうから putc() 1回だけで漢字が出ることはまずないと思う。
出力する端末が漢字を出すような端末で、尚且つその端末で漢字とされるコードを引き渡すのであれば出る。
しかしメジャーな文字コード体系で1バイトだけで漢字を表すようなものはなく、そういった端末も(おそらく自作しない限りは)ないだろうから putc() 1回だけで漢字が出ることはまずないと思う。
222デフォルトの名無しさん (ワッチョイ 65b7-tMQb)
2020/10/26(月) 07:27:20.32ID:ddH/1NYY0223デフォルトの名無しさん (ブーイモ MM76-mN35)
2020/10/26(月) 09:07:00.12ID:ePNtOm9AM224デフォルトの名無しさん (ワッチョイ 65b7-tMQb)
2020/10/26(月) 09:39:14.29ID:ddH/1NYY0 >>223
ん? 俺は、おまえさんに恥をかかせたのか? そういう意図はなかったが
ん? 俺は、おまえさんに恥をかかせたのか? そういう意図はなかったが
225デフォルトの名無しさん (ブーイモ MM76-mN35)
2020/10/26(月) 10:11:22.50ID:ePNtOm9AM >>224
最初の質問が
*(PBYTE*)&a += 5;
(PBYTE)a += 5;
の違いなのに、
(PBYTE)*a += 5;
を解説するというトンチンカンで質問者を困らす回答見せられたら、
質問者に申し訳ないし同じ回答者としてこっちが恥ずかしくなるわ
最初の質問が
*(PBYTE*)&a += 5;
(PBYTE)a += 5;
の違いなのに、
(PBYTE)*a += 5;
を解説するというトンチンカンで質問者を困らす回答見せられたら、
質問者に申し訳ないし同じ回答者としてこっちが恥ずかしくなるわ
226デフォルトの名無しさん (ワッチョイ 65b7-tMQb)
2020/10/26(月) 11:15:20.28ID:ddH/1NYY0 俺は別に回答なんかしてねえよ
> ポインタが指す値に5を加算
これは間違いだよと指摘しただけだ
俺と217の対話に横レスしてきて勝手に恥ずかしいとか言ってる恥ずかしいやつに用はない
> ポインタが指す値に5を加算
これは間違いだよと指摘しただけだ
俺と217の対話に横レスしてきて勝手に恥ずかしいとか言ってる恥ずかしいやつに用はない
227デフォルトの名無しさん (ワイーワ2 FFca-YvdE)
2020/10/26(月) 15:09:18.69ID:EltRWJ/HF int a = 123;
int *p = &a;
unsigned c = (unsigned long)p;
みたいにすると怒られるので
unsigned c = *(unsigned long *)&p;
みたいに参照すると ok だったりするけど
本来は参照するだけだったコードが
いつの間にか事情を知らない人によって
*(unsigned long *)&p += 5;
にすり替わったんじゃないかと最近思うようになった
int *p = &a;
unsigned c = (unsigned long)p;
みたいにすると怒られるので
unsigned c = *(unsigned long *)&p;
みたいに参照すると ok だったりするけど
本来は参照するだけだったコードが
いつの間にか事情を知らない人によって
*(unsigned long *)&p += 5;
にすり替わったんじゃないかと最近思うようになった
228デフォルトの名無しさん (ワッチョイ 0569-z4aL)
2020/10/26(月) 15:20:36.35ID:lJWYL04O0 ポインタ(アドレス)の距離を求めるのに ポインタ値を整数化することはあるかもしれないしエラーにはならんね
unsigned long c1 = (unsigned long)p1;
unsigned long c2 = (unsigned long)p2;
c1 - c2 のような (p1 - p2 はあくまで要素数だしね)
unsigned long c1 = (unsigned long)p1;
unsigned long c2 = (unsigned long)p2;
c1 - c2 のような (p1 - p2 はあくまで要素数だしね)
229デフォルトの名無しさん (エムゾネ FFa2-Naer)
2020/10/26(月) 15:49:43.24ID:qF0DukLxF #include <iostream>
using namespace std;
class A{public: int a; A(int b):a(b){}};
int main() {
A a(123), b(456);
A *p = &a, *q = &b;
unsigned long r = (unsigned long)p, s = (unsigned long)q;
cout << s - r << endl;
cout << (unsigned long)q - (unsigned long)p << endl;
cout << (unsigned long)&b - (unsigned long)&a << endl;
cout << (unsigned long)&q - (unsigned long)&p << endl;
return 0;
}
特に問題無いか
using namespace std;
class A{public: int a; A(int b):a(b){}};
int main() {
A a(123), b(456);
A *p = &a, *q = &b;
unsigned long r = (unsigned long)p, s = (unsigned long)q;
cout << s - r << endl;
cout << (unsigned long)q - (unsigned long)p << endl;
cout << (unsigned long)&b - (unsigned long)&a << endl;
cout << (unsigned long)&q - (unsigned long)&p << endl;
return 0;
}
特に問題無いか
230デフォルトの名無しさん (ワッチョイ 2101-3XbD)
2020/10/26(月) 20:55:35.80ID:pV+9Vnjg0231デフォルトの名無しさん (ワッチョイ 2101-3XbD)
2020/10/26(月) 20:56:38.86ID:pV+9Vnjg0 × p を
○ p の指し先を
○ p の指し先を
232デフォルトの名無しさん (ラクッペペ MMe6-4R9W)
2020/10/26(月) 21:41:34.62ID:P78swXdWM *pじゃなくてpを取り出してるからだろ
233デフォルトの名無しさん (ワッチョイ d1c7-tMQb)
2020/10/26(月) 21:55:26.21ID:ZLlt5QiZ0 pの指し先をunsignedとして抜き出しているわけではないよ
p(ポインタ)自体をunsignedに無理やり変換している
p(ポインタ)自体をunsignedに無理やり変換している
234デフォルトの名無しさん (ワッチョイ 21da-gGz3)
2020/10/26(月) 21:58:46.96ID:rHcuqZcg0235デフォルトの名無しさん (ワッチョイ 2101-3XbD)
2020/10/26(月) 22:01:39.15ID:pV+9Vnjg0 ん? ポインタの整数値化 intptr_t な意図なの?
intptr_t c = *(intptr_t *)&p; がなおさら混乱するな
intptr_t c = *(intptr_t *)&p; がなおさら混乱するな
236デフォルトの名無しさん (ワッチョイ 21da-gGz3)
2020/10/26(月) 22:08:25.93ID:rHcuqZcg0237デフォルトの名無しさん (ワッチョイ 21da-gGz3)
2020/10/26(月) 22:09:01.82ID:rHcuqZcg0 uintptr_t addr_a = (uintptr_t)&a;
_tが抜けた
_tが抜けた
238デフォルトの名無しさん (ワッチョイ 2101-3XbD)
2020/10/26(月) 22:12:25.39ID:pV+9Vnjg0239デフォルトの名無しさん (ワッチョイ 0d7c-Naer)
2020/10/27(火) 12:22:27.85ID:telUcSp60240デフォルトの名無しさん (ワッチョイ 5335-OcNG)
2020/10/29(木) 08:19:02.64ID:HwPze+NQ0 どーせ、プロセッサのプロテクトモードとかで、純粋にポインタの計算すると意図しないオーバーフローやアンダーフローするからじゃね?
241デフォルトの名無しさん (ワッチョイ 0bb6-CXnf)
2020/11/01(日) 06:41:32.43ID:TJdrJp6g0 ポインタは符号付きなわけか
242デフォルトの名無しさん (ワッチョイ 12ad-ghpU)
2020/11/07(土) 11:29:01.04ID:zMpN0fYG0 ファミコンってC言語でもプログラミングできるんだねえ
すごいねえ
すごいねえ
243デフォルトの名無しさん (ブーイモ MMad-z/nF)
2020/11/07(土) 15:37:28.16ID:vm8bz31qM そんなのコンパイラ次第じゃないのか?
知らんけど
知らんけど
244デフォルトの名無しさん (ワッチョイ 92ad-t1Nk)
2020/11/08(日) 15:22:32.44ID:iVjroALJ0 >>242
ファミコンのCPUは2A03(6502互換)だからかなり苦しい感じだと思うけどな。
スタックポインタが8bitしかないしな。つまりスタックは256バイト固定。もちろんメモリは最大64KB。
それでもCコンパイラはあったようなのでかなり工夫したんだろうと思う。
ファミコンのCPUは2A03(6502互換)だからかなり苦しい感じだと思うけどな。
スタックポインタが8bitしかないしな。つまりスタックは256バイト固定。もちろんメモリは最大64KB。
それでもCコンパイラはあったようなのでかなり工夫したんだろうと思う。
245デフォルトの名無しさん (ワッチョイ adda-bRPx)
2020/11/08(日) 16:57:10.35ID:qvYN+WNM0 今も昔もゲーム機の開発なんかはクロス環境だろ
ターゲット上で直接コンパイラ走らせているとは思えないのだが
ターゲット上で直接コンパイラ走らせているとは思えないのだが
246デフォルトの名無しさん (ワッチョイ b163-7Ce/)
2020/11/08(日) 17:19:43.81ID:fW7gwItS0 任天堂から高価な開発機を借りるか買うかしてやるんじゃなかった?
247はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ee3e-L1wp)
2020/11/08(日) 17:30:03.29ID:jznHieWa0 >>245
いやいや、ランタイムの保証が小さければ工夫がいることにはかわらんやろ。
いやいや、ランタイムの保証が小さければ工夫がいることにはかわらんやろ。
248デフォルトの名無しさん (ワッチョイ 9eb6-t1Nk)
2020/11/09(月) 06:33:25.75ID:ntGr9Bxw0 「Cが使える」=「Cコンパイラを実行できる」と思ってしまうやつって
BASIC出身なんだろうな
BASIC出身なんだろうな
249デフォルトの名無しさん (スププ Sdb2-dhhq)
2020/11/09(月) 07:43:11.08ID:RNMdHR5xd そりゃコンパイル後のバイナリは言語とは関係ないから「ある言語が使える」はそのプラットフォーム上でコンパイラなりインタプリタが動くことを意味するやろ
250デフォルトの名無しさん (ワッチョイ 9eb6-t1Nk)
2020/11/09(月) 08:25:46.31ID:ntGr9Bxw0 ドヤるようなことかよw
251デフォルトの名無しさん (ラクッペペ MM96-SeBg)
2020/11/09(月) 09:08:37.31ID:xqW72pM4M252デフォルトの名無しさん (ワッチョイ b1d2-t1Nk)
2020/11/09(月) 11:06:53.99ID:msclAy3m0 FCの開発機は1千万円でメガドラ、PCエンジンは250万円という記事を昔みかけた。
そういやぁバッ活に「子育てごっこ」とかいうFC開発キットの広告出てたっけ。
そういやぁバッ活に「子育てごっこ」とかいうFC開発キットの広告出てたっけ。
253デフォルトの名無しさん (ワッチョイ 9eb6-t1Nk)
2020/11/09(月) 11:56:33.56ID:ntGr9Bxw0 あの頃のカスタムLSIは衝撃だったね
255デフォルトの名無しさん (ワッチョイ 9eb6-t1Nk)
2020/11/09(月) 12:11:03.31ID:ntGr9Bxw0 ( ゚∀゚) アハハハハノヽノヽノ \ / \ / \
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【前橋市】小川晶前市長とラブホテルで打ち合わせをした54歳男性職員を停職処分 今月末で依願退職するという [シャチ★]
- 【おこめ券】鈴木農相 米価維持の意図「一切ない」★2 [ぐれ★]
- 【サッカー】元日本代表DF冨安がオランダ1部アヤックスと大筋合意か 現地メディア報じる [久太郎★]
- 【埼玉】「無免許で高速道路で事故」トラックの追突事故で10代男性死亡 無免許過失運転致死の疑いでトルコ国籍の男(22)逮捕 戸田市 [ぐれ★]
- 【日銀総裁】賃金に上昇圧力 人手不足で労働市場逼迫 [蚤の市★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★7 [七波羅探題★]
- 高市早苗「竹島は日本領土」 [834922174]
- ヤフコメで「共感した」が千や万いくのってやっぱり一体感を感じて気持ちいいの? [998357762]
- 俺は人間国宝
- この国がこんなにボロボロになった考えられる原因て何? [605029151]
- 【速報】1ポンド210円で日英GDP逆転(残り1.5円)...世界6位の経済規模に転落 [237216734]
- 🏡
