!extend:checked:vvvvv:1000:512
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/
-
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
※前スレ
C言語なら俺に聞け 151
https://mevius.5ch.net/test/read.cgi/tech/1554171817/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
C言語なら俺に聞け 152
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (アウアウウー Sa4f-7DQ/)
2019/06/17(月) 18:27:10.41ID:3L1/L9kLa311デフォルトの名無しさん (ワッチョイ cf02-4kw8)
2019/07/09(火) 18:21:06.36ID:NP6oYl9g0 X 3010:2003 では
6.7.5.3 関数宣言子(関数原型を含む)
「並びの中の唯一の項目が void 型で名前のない仮引数であるという特別な場合,関数が仮引数をもたないことを指定する。」
6.9.1 関数定義
typedef int F(void);
F f, g;
int f(void) { /*... */ } // 正
int g() { /*... */ } // 正
という訳で
int func(void); /* prototype */
int func() /* definition */
{
return 0;
}
どこかまちがっているか
6.7.5.3 関数宣言子(関数原型を含む)
「並びの中の唯一の項目が void 型で名前のない仮引数であるという特別な場合,関数が仮引数をもたないことを指定する。」
6.9.1 関数定義
typedef int F(void);
F f, g;
int f(void) { /*... */ } // 正
int g() { /*... */ } // 正
という訳で
int func(void); /* prototype */
int func() /* definition */
{
return 0;
}
どこかまちがっているか
312デフォルトの名無しさん (アウアウクー MM87-yCcC)
2019/07/09(火) 18:28:37.94ID:8Y9GhXx/M313デフォルトの名無しさん (ワッチョイ 0361-mVFY)
2019/07/09(火) 18:36:42.49ID:lRtOoeh80 それは同じ"hoge"のアドレスがロードされるだけ
文字列リテラルのポインタ扱うならconst char *使いなされ
文字列リテラルのポインタ扱うならconst char *使いなされ
314デフォルトの名無しさん (アウアウウー Sa67-ze1x)
2019/07/09(火) 18:43:38.45ID:gdYXIa6pa >>312
文字列の定数は静的な領域に作られるだけで実行時に動的に作られたりしないのでそれは問題なし。
文字列の定数は静的な領域に作られるだけで実行時に動的に作られたりしないのでそれは問題なし。
315デフォルトの名無しさん (アウアウウー Sa67-ze1x)
2019/07/09(火) 18:46:20.39ID:gdYXIa6pa あ、でも、定数でなくても同じか。単にポインタ代入してるだけだもんな。
316デフォルトの名無しさん (ワッチョイ c301-mE9d)
2019/07/09(火) 18:47:53.66ID:jbK1WB2u0317デフォルトの名無しさん (ワッチョイ 9327-mE9d)
2019/07/09(火) 19:48:16.54ID:YXbnrG+I0318デフォルトの名無しさん (ワッチョイ 63f6-tOvn)
2019/07/09(火) 20:34:43.07ID:3UBru1uA0 >>311
おまえさんは「関数原型を含む」を、「関数原型についてのみ」と脳内変換しているのか?
> int func() /* definition */
これのどこに、void型で名前のない仮引数があるんだ?
おまえさんは「関数原型を含む」を、「関数原型についてのみ」と脳内変換しているのか?
> int func() /* definition */
これのどこに、void型で名前のない仮引数があるんだ?
>>296
それは lint 対策ですよ
それは lint 対策ですよ
320デフォルトの名無しさん (アウアウウー Sa67-j2me)
2019/07/09(火) 22:42:13.74ID:pf5t+DpRa 最近C言語学び始めた者ですが練習がてらトランプのブラック・ジャック的なものを作っています
そこで11以上がでた時10とするという単純なプログラムを書きたいのですがつまづいています。
ご教授頂ければありがたいです
そこで11以上がでた時10とするという単純なプログラムを書きたいのですがつまづいています。
ご教授頂ければありがたいです
321デフォルトの名無しさん (ワッチョイ cf63-mE9d)
2019/07/09(火) 23:16:49.68ID:PyDbCO5q0322デフォルトの名無しさん (アウアウウー Sa67-j2me)
2019/07/09(火) 23:46:17.89ID:pf5t+DpRa >>321
一応rand関数というのをつかって1~13までの数をランダムで出すようには組めたのですがそのランダムで出た数が11以上だった時10として扱うというのが組めません
やはり13個全部配列組む方が確実なのでしょうか
一応rand関数というのをつかって1~13までの数をランダムで出すようには組めたのですがそのランダムで出た数が11以上だった時10として扱うというのが組めません
やはり13個全部配列組む方が確実なのでしょうか
323デフォルトの名無しさん (ワッチョイ 7f77-tOvn)
2019/07/09(火) 23:52:36.31ID:khnvGGZh0 ブラックジャックのルール全部適用させようとすると初心者には結構ハードル高いような気がする。
324デフォルトの名無しさん (ワッチョイ cf63-mE9d)
2019/07/09(火) 23:54:18.16ID:PyDbCO5q0325デフォルトの名無しさん (アウアウウー Sa67-j2me)
2019/07/09(火) 23:59:20.27ID:pf5t+DpRa >>324
ありがとうございます!早速試して見ます!
ありがとうございます!早速試して見ます!
326デフォルトの名無しさん (アウアウウー Sa67-j2me)
2019/07/10(水) 00:04:27.37ID:YFbFPCAXa >>323
あんまり細かいことはさすがに手が出ないのでとりあえず
・11以上は10として扱う
・21超えたら負け
・1がでたら1か11好きな方を選べる
この3つだけできればとりあえずブラック・ジャックとしてゲームは成り立つかなと考えてます
あんまり細かいことはさすがに手が出ないのでとりあえず
・11以上は10として扱う
・21超えたら負け
・1がでたら1か11好きな方を選べる
この3つだけできればとりあえずブラック・ジャックとしてゲームは成り立つかなと考えてます
327デフォルトの名無しさん (アウアウエー Sadf-lEBl)
2019/07/10(水) 00:04:44.92ID:q0FoS2hTa カード52枚作るのがいいと思いますよ。
シャッフルもしがいがある。
配列の要素は見た目(ハートのJとか)を表す構造体。なんだったら実際の値も入れる。Aが微妙ですが。
シャッフルもしがいがある。
配列の要素は見た目(ハートのJとか)を表す構造体。なんだったら実際の値も入れる。Aが微妙ですが。
328デフォルトの名無しさん (アウアウウー Sa67-j2me)
2019/07/10(水) 00:14:34.49ID:YFbFPCAXa >>327
作り始めた時52枚全部定義すれば本格的になるかなと思ったのですが、ご教授お願いしている身で申し訳ないんですけど少し面倒だなと思ってしまいましてorz
やっぱりちゃんとしたブラック・ジャックを作りたいなら52枚全部定義した方がいいですよね
作り始めた時52枚全部定義すれば本格的になるかなと思ったのですが、ご教授お願いしている身で申し訳ないんですけど少し面倒だなと思ってしまいましてorz
やっぱりちゃんとしたブラック・ジャックを作りたいなら52枚全部定義した方がいいですよね
329デフォルトの名無しさん (ワッチョイ 6f02-tOvn)
2019/07/10(水) 02:58:29.54ID:Jh4oErcv0 そうしないと確率が変わってしまうのではないかな。
330デフォルトの名無しさん (ワッチョイ 13d2-mVFY)
2019/07/10(水) 07:53:06.60ID:c5IU7AfX0 某ゲーム内のブラックジャックは同じカードが自分と相手に出てきた。
カジノのブラックジャックだとトランプを何セットも混ぜてやってるらしいね。
カジノのブラックジャックだとトランプを何セットも混ぜてやってるらしいね。
331デフォルトの名無しさん (ワッチョイ 6f8c-r2oz)
2019/07/10(水) 08:45:30.08ID:FsJSBTR40 絵札の数が決まっていると残りの絵札を数えれば勝てるらしい。
332デフォルトの名無しさん (アウアウエー Sadf-lEBl)
2019/07/10(水) 08:48:48.34ID:q0FoS2hTa 実際は6セットとか使うわけです。
有限なのでカウンティングができる。
過去の結果に依存するってことはサイコロ使うような無記憶な試行ではないってことだね。
有限なのでカウンティングができる。
過去の結果に依存するってことはサイコロ使うような無記憶な試行ではないってことだね。
333デフォルトの名無しさん (アークセー Sx87-apWJ)
2019/07/10(水) 09:15:26.99ID:1T4zvF6/x カウンティングだけで勝つのは驚異的な記憶力がないとなかなか難しいと聞く。
小説「マルドゥックスクランブル」でのBJシーンは有名だけど、読んででも半分も理解できなかった記憶があるわ。
小説「マルドゥックスクランブル」でのBJシーンは有名だけど、読んででも半分も理解できなかった記憶があるわ。
334デフォルトの名無しさん (ワッチョイ c301-8j+F)
2019/07/10(水) 09:18:07.74ID:8OTK1K8V0 麻雀よりは簡単
335デフォルトの名無しさん (ワッチョイ c301-8j+F)
2019/07/10(水) 09:20:35.29ID:8OTK1K8V0 麻雀の方が簡単か
すまん
すまん
336デフォルトの名無しさん (ワッチョイ cf69-BEQt)
2019/07/10(水) 09:37:28.19ID:z7915HRG0 BJのカードカウンティング、結構な種類があるんだね
ttps://vegasdocs.com/blackjack/counting.html
ttps://vegasdocs.com/blackjack/counting.html
337デフォルトの名無しさん (ササクッテロ Sp87-4hHn)
2019/07/10(水) 17:29:16.11ID:6YiGFI5ep 麻雀の役判定、得点計算できるライブラリってある?
338デフォルトの名無しさん (ドコグロ MMdf-hlKr)
2019/07/10(水) 18:23:48.87ID:Tg8SA/BfM >>337
ググれ
ググれ
339デフォルトの名無しさん (ワッチョイ cf63-mE9d)
2019/07/10(水) 18:44:07.65ID:rAQ8nA0Y0 >麻雀の役判定、得点計算
あると思う
判定も計算も難しくはないし
無くても自製可能なレベル
あると思う
判定も計算も難しくはないし
無くても自製可能なレベル
340デフォルトの名無しさん (ワッチョイ 337d-AH8H)
2019/07/10(水) 19:16:43.40ID:iZJC1PSD0 ものすごく基礎的な質問で申し訳ないんだけどテトリスのようなゲームを作るとき、実行中のプログラムとは別にn秒ごとにあるプログラムを実行するようなのってどうすればいいの?
キーボードからの入力待ちの状態と並行して時間の計測とブロックを落下させるみたいなの
キーボードからの入力待ちの状態と並行して時間の計測とブロックを落下させるみたいなの
341デフォルトの名無しさん (ワッチョイ cf63-mE9d)
2019/07/10(水) 19:21:28.73ID:rAQ8nA0Y0 OSによって違いがあるけれど、
指定した時間間隔でイベントを発生させ
そのイベント通知を受けて処理を行うようにする
指定した時間間隔でイベントを発生させ
そのイベント通知を受けて処理を行うようにする
342デフォルトの名無しさん (ワッチョイ 13d2-mVFY)
2019/07/10(水) 19:24:28.60ID:c5IU7AfX0 DOSならVSYNC割り込みとかタイマ割り込みっていうのがある。
343デフォルトの名無しさん (アウアウカー Sac7-lEBl)
2019/07/10(水) 19:37:55.05ID:b2TgwlJAa 入力待ちしてるはずなのになんでブロックは落ちてるんだ
344デフォルトの名無しさん (ワッチョイ 2301-apWJ)
2019/07/10(水) 19:48:07.07ID:wGS7rpFP0 待ってないから。
345デフォルトの名無しさん (ワッチョイ 2301-BEQt)
2019/07/10(水) 19:48:36.59ID:YAEkGiKl0 ブロッキング/ノンブロッキング
同期/非同期
同期/非同期
346デフォルトの名無しさん (ワッチョイ 337d-AH8H)
2019/07/10(水) 19:59:01.20ID:iZJC1PSD0 うーん…前提から間違ってるのか?
ブロックを生成した後、キーボードからの入力を待ちながら一定時間毎に落下させるのかと思ってたけど、一定時間毎に落下させる中でキーボードからの入力があればそちらを実行する感じ?
ブロックを生成した後、キーボードからの入力を待ちながら一定時間毎に落下させるのかと思ってたけど、一定時間毎に落下させる中でキーボードからの入力があればそちらを実行する感じ?
347デフォルトの名無しさん (ワッチョイ 6f79-rgZK)
2019/07/10(水) 20:00:37.82ID:b4vpo7xg0 非同期処理
348デフォルトの名無しさん (ワッチョイ 337d-AH8H)
2019/07/10(水) 20:08:27.28ID:iZJC1PSD0 なるほど
同期処理、非同期処理を使えば割り込ませたりすることができるのか
まだほとんど理解できてないけどある程度方向性は見えてきた気がする
サンクス
同期処理、非同期処理を使えば割り込ませたりすることができるのか
まだほとんど理解できてないけどある程度方向性は見えてきた気がする
サンクス
349デフォルトの名無しさん (ワッチョイ cf63-mE9d)
2019/07/10(水) 20:10:55.04ID:rAQ8nA0Y0350デフォルトの名無しさん (ブーイモ MMff-pONF)
2019/07/10(水) 20:23:29.74ID:nUGO9xykM351デフォルトの名無しさん (アウアウウー Sa67-ze1x)
2019/07/10(水) 20:48:50.43ID:lDiVjXP/a テトリス程度の(コンピュータからしたらゆっくりな動きの)ゲームならマルチタスクやマルチスレッドにしなくても順番に処理すればできそうだけどな。
キー入力については何も押されてなかったらすぐに処理を抜けるようにしとけば良い。
で、画面書き換えたりする処理して、またキー入力されてるかを見て、という感じで繰り返す。
キー入力されてたらそれによって変化するパラメータ(テトリスならブロックの向き等)を変更する。
キー入力については何も押されてなかったらすぐに処理を抜けるようにしとけば良い。
で、画面書き換えたりする処理して、またキー入力されてるかを見て、という感じで繰り返す。
キー入力されてたらそれによって変化するパラメータ(テトリスならブロックの向き等)を変更する。
352デフォルトの名無しさん (アウアウエー Sadf-lEBl)
2019/07/10(水) 21:05:28.75ID:gc55JO0Da マルチスレッドだって順番だろう
昔はコアが一つしかなかったんじゃよ
昔はコアが一つしかなかったんじゃよ
353デフォルトの名無しさん (ワッチョイ 6f8c-r2oz)
2019/07/10(水) 23:25:08.72ID:QCGATMsz0 ソフトタイマ ポーリング 状態シーケンス制御
354デフォルトの名無しさん (ワッチョイ 7602-AvHN)
2019/07/11(木) 01:13:09.90ID:9IeQUu2b0 >>352
順番って、時分割で切り替わるって意味?
しかしそれは普通はOSレベルでやってるので切り替え部分までユーザが考える必要はないね。
そこまで自分で作らねばならないようなOSなし環境や昔の 8 bit CPU みたいなのだと別だが。
順番って、時分割で切り替わるって意味?
しかしそれは普通はOSレベルでやってるので切り替え部分までユーザが考える必要はないね。
そこまで自分で作らねばならないようなOSなし環境や昔の 8 bit CPU みたいなのだと別だが。
355デフォルトの名無しさん (ワッチョイ db8f-AthE)
2019/07/11(木) 02:10:12.63ID:j5kiUrVb0 >>351
それってキー入力取り逃したりしないの?
それってキー入力取り逃したりしないの?
356デフォルトの名無しさん (ワッチョイ 4e7b-dMLx)
2019/07/11(木) 06:43:27.53ID:bnplrtu80 >>352
マルチスレッドじゃなくて単なるループだと思うが
マルチスレッドじゃなくて単なるループだと思うが
357デフォルトの名無しさん (ワッチョイ 0b01-P44A)
2019/07/11(木) 07:08:26.92ID:l57S3jiM0 ハードウェア割り込みとマルチタスクOSがごっちゃになってるんだろ
358デフォルトの名無しさん (ワッチョイ 4e69-dwJn)
2019/07/11(木) 08:25:52.40ID:Osy0Da+v0 >>355
処理のサイクル(1/30秒 や 1/60秒)の間に off->on->off とパルス状に入力されると取りこぼすよ
処理のサイクル(1/30秒 や 1/60秒)の間に off->on->off とパルス状に入力されると取りこぼすよ
359デフォルトの名無しさん (アウアウウー Sa47-KZVA)
2019/07/11(木) 09:26:29.26ID:42U1oSKOa 高橋名人の16連射でもコンピュータからすれば物凄く遅いスピードだから問題ない。40年ぐらい前のクロック4MHzで動く 8 bit CPU でも余裕だ。
それにゲームなら一回や二回入力が失敗しても文句を言うやつはまずいない。
それにゲームなら一回や二回入力が失敗しても文句を言うやつはまずいない。
360デフォルトの名無しさん (アウアウエー Sa52-NWea)
2019/07/11(木) 10:34:43.73ID:nMYI1ORia >>356
まあユーザースレッドなんて言葉もあるけども
昔のCPUだとぶんまわすしかなかったけど、ある意味わかりやすい気がするわ。
リッチな環境でアクションゲームってどうやって作るの?条件変数とか使うのかね?
まあユーザースレッドなんて言葉もあるけども
昔のCPUだとぶんまわすしかなかったけど、ある意味わかりやすい気がするわ。
リッチな環境でアクションゲームってどうやって作るの?条件変数とか使うのかね?
361デフォルトの名無しさん (ワッチョイ 3e7c-P44A)
2019/07/11(木) 11:38:42.52ID:KgOJMZpN0362デフォルトの名無しさん (ワッチョイ 9a2c-i8Xk)
2019/07/11(木) 12:18:10.67ID:xCkJ5LaR0 組み込みでは、0.1〜1秒など、長時間に渡って、
何回もキーを押しているかどうか確認してから、機械を動かす
そうやって、ボタンを確実に押しているかどうかを判断する
1回で判断すると、ボタンの接触不良で、
モーターのon/off が繰り返されてしまうから、短時間で判断できない
この判断を、ハードウェア回路で行うのと、ソフトウェアで行うのと、2つの方法がある
詳しくは、組み込み(エンベッド)情報処理資格の教科書を参照
何回もキーを押しているかどうか確認してから、機械を動かす
そうやって、ボタンを確実に押しているかどうかを判断する
1回で判断すると、ボタンの接触不良で、
モーターのon/off が繰り返されてしまうから、短時間で判断できない
この判断を、ハードウェア回路で行うのと、ソフトウェアで行うのと、2つの方法がある
詳しくは、組み込み(エンベッド)情報処理資格の教科書を参照
363デフォルトの名無しさん (ワッチョイ b352-P44A)
2019/07/11(木) 12:23:27.06ID:ZSl7eG940 一々教科書を読まなくても「組み込み チャタリング」などで調べれば分かるのでは
364デフォルトの名無しさん (ワッチョイ 5fd2-TPoM)
2019/07/11(木) 15:03:35.76ID:vYMpRAzp0 Windows初期はVsync待ちとかウェイトかけずに処理してて、CPU速度が上がったら実機より速くなって(60fps以上)ゲームにならんのもあったわ。
365デフォルトの名無しさん (アウアウウー Sa47-KZVA)
2019/07/11(木) 21:07:12.90ID:W9yQmyPFa エイリアンの動きが速すぎて穴を掘ってる暇がないと
366デフォルトの名無しさん (ワッチョイ e301-ihks)
2019/07/11(木) 21:08:10.26ID:+FsFkp9e0 それ何ていう平安京エイリアン?
367デフォルトの名無しさん (ワッチョイ 73f6-AvHN)
2019/07/11(木) 21:47:38.69ID:BSTUJEPb0 space panic
368デフォルトの名無しさん (ワッチョイ e77d-9mmk)
2019/07/11(木) 21:55:53.90ID:pe38QhTW0 Linuxってconio.h使えないのかよ
getcheもkbhitも駄目とか面倒臭いな
getcheもkbhitも駄目とか面倒臭いな
369蟻人間 ◆T6xkBnTXz7B0 (スププ Sdba-Frt+)
2019/07/11(木) 21:57:23.76ID:JEmOAlRld コンソールで色を付けるならpdcurse使え。ncursesは古い
370蟻人間 ◆T6xkBnTXz7B0 (スププ Sdba-Frt+)
2019/07/11(木) 21:57:56.88ID:JEmOAlRld pdcurses
371デフォルトの名無しさん (ワッチョイ 73f6-AvHN)
2019/07/11(木) 22:15:03.30ID:BSTUJEPb0 ioctl
372デフォルトの名無しさん (ワッチョイ 0b01-S8wx)
2019/07/12(金) 04:02:10.72ID:30ixxYg+0 pdcursesってcursesのWindows実装なんだけどな
373デフォルトの名無しさん (アウアウウー Sa47-KZVA)
2019/07/12(金) 12:58:51.21ID:4AR7dspsa >>368
ncursesとかを使ってそういうラッパー関数作れば良いのではないかな。
ncursesとかを使ってそういうラッパー関数作れば良いのではないかな。
374デフォルトの名無しさん (ワッチョイ db00-ZD/u)
2019/07/12(金) 18:40:44.71ID:q8HbeEfz0 Cで面白いワンライナーとかない?ICCCMとかにも案外ワンライナーという分類はないんだよね。
375デフォルトの名無しさん (ワッチョイ 4e63-P44A)
2019/07/12(金) 19:20:34.57ID:rA9WmwUa0376デフォルトの名無しさん (ワッチョイ 5fd2-TPoM)
2019/07/12(金) 19:24:01.49ID:Vt6HtS1w0 BASIC時代に1画面プログラムってのがあったな。
377デフォルトの名無しさん (アウアウウー Sa47-ihks)
2019/07/12(金) 19:40:11.46ID:aSZPouska 1行の定義って何?
378デフォルトの名無しさん (ワッチョイ e301-CjyB)
2019/07/12(金) 19:56:09.02ID:pYBNura/0 >>373
既に世界中で書かれて公開されている予感
既に世界中で書かれて公開されている予感
379デフォルトの名無しさん (ワッチョイ 5ac5-q5pO)
2019/07/12(金) 19:56:09.31ID:zAF1v8/n0 \n
380デフォルトの名無しさん (ワッチョイ 5a73-q5pO)
2019/07/13(土) 01:22:11.42ID:+XrRzYc00 >>378
結婚して///
結婚して///
381デフォルトの名無しさん (ワッチョイ 73f6-AvHN)
2019/07/13(土) 06:35:45.40ID:GFbMPvry0 #defineを-Dでやれば1行にできるかも
https://www.ioccc.org/2004/vik1.c
https://www.ioccc.org/2004/vik1.c
382デフォルトの名無しさん (ワッチョイ 17d2-rBUL)
2019/07/13(土) 07:12:15.59ID:THUdwCLa0 そもそも改行しないでプログラム書けば一行
383デフォルトの名無しさん (ワッチョイ db2c-WIjK)
2019/07/13(土) 13:07:12.18ID:BfevEbDR0 cppディレクティブは1個1行
384デフォルトの名無しさん (アウアウクー MM7b-BPOI)
2019/07/14(日) 22:19:01.35ID:uXqqdpfBM int i = 0;
int s[2];
s[i] = i++ + 1;
printf("%d", s[1]);
これの出力が1になります。これは理解できません。
事実、3行目は以下のようにすると出力は0になります。
s[i++] = 1;
また、3行目は以下のようにすると出力は0になります。
s[i] = i++;
int s[2];
s[i] = i++ + 1;
printf("%d", s[1]);
これの出力が1になります。これは理解できません。
事実、3行目は以下のようにすると出力は0になります。
s[i++] = 1;
また、3行目は以下のようにすると出力は0になります。
s[i] = i++;
385デフォルトの名無しさん (ワッチョイ 9a01-DHp5)
2019/07/14(日) 22:22:40.77ID:/MgLlV8v0386蟻人間 ◆T6xkBnTXz7B0 (スフッ Sdba-Frt+)
2019/07/14(日) 22:30:43.07ID:uXkiDi0Ud 「式の評価」という言葉はわかるか?
1+1という式を評価すると2になる。
C/C++の後置演算子では、全ての評価が終わった後で変数を書き換える。
i++は、++がiの後ろについているから、後置だ。i++を評価すると、評価した瞬間の値はiであり、そして式全体の評価が終わると、iはプラスいちになる。
後置の反対は前置演算子であり、式全体の評価の前に変数を+1もしくは-1する。
1+1という式を評価すると2になる。
C/C++の後置演算子では、全ての評価が終わった後で変数を書き換える。
i++は、++がiの後ろについているから、後置だ。i++を評価すると、評価した瞬間の値はiであり、そして式全体の評価が終わると、iはプラスいちになる。
後置の反対は前置演算子であり、式全体の評価の前に変数を+1もしくは-1する。
387デフォルトの名無しさん (アウアウクー MM7b-BPOI)
2019/07/14(日) 22:48:05.04ID:uXqqdpfBM 演算規則に従い、インクリメント後置なので、元の3行目の式は
s[i(==0)] = i(==0) + 1
i = i + 1
の順に行われて結果、
s[0]に0が代入されてs[1]の値は初期値0だと思うのですが。
事実、3行目がs[i] = i++;なら上の通りの順で実行されます。
演算規則が無視されて結果がコンパイラ依存になる理由は何ですか?
s[i(==0)] = i(==0) + 1
i = i + 1
の順に行われて結果、
s[0]に0が代入されてs[1]の値は初期値0だと思うのですが。
事実、3行目がs[i] = i++;なら上の通りの順で実行されます。
演算規則が無視されて結果がコンパイラ依存になる理由は何ですか?
388デフォルトの名無しさん (アウアウクー MM7b-BPOI)
2019/07/14(日) 22:48:51.03ID:uXqqdpfBM 私は間違えました、s[0]に1が代入されます。
389デフォルトの名無しさん (アウアウクー MM7b-BPOI)
2019/07/14(日) 22:52:20.27ID:uXqqdpfBM また、3行目を以下の通りにすると演算規則通りに結果2が得られます。
s[i] = ++i + 1;
s[i] = ++i + 1;
390デフォルトの名無しさん (アウアウクー MM7b-BPOI)
2019/07/14(日) 22:53:42.53ID:uXqqdpfBM 順番はこの通りです、
i = i + 1
s[i(==1)] = i(==1) + 1
i = i + 1
s[i(==1)] = i(==1) + 1
391蟻人間 ◆T6xkBnTXz7B0 (スフッ Sdba-Frt+)
2019/07/14(日) 23:13:20.84ID:uXkiDi0Ud >>387
主な原因は順序が決められないことと最適化のためらしい。詳しくは知らん
主な原因は順序が決められないことと最適化のためらしい。詳しくは知らん
392デフォルトの名無しさん (アウアウクー MM7b-BPOI)
2019/07/14(日) 23:15:43.21ID:uXqqdpfBM i = i++;
これの結果が未定義なのは直感的に理解できます。
代入とインクリメント増分の関係が不明だからです。
s[i] = i++;
これの結果が未定義なのは直感的に理解できません。
演算規則に従えば、iはインデックスとしての間接参照でしかないからです。
これの結果が未定義なのは直感的に理解できます。
代入とインクリメント増分の関係が不明だからです。
s[i] = i++;
これの結果が未定義なのは直感的に理解できません。
演算規則に従えば、iはインデックスとしての間接参照でしかないからです。
393デフォルトの名無しさん (ワッチョイ e301-S8wx)
2019/07/14(日) 23:18:12.85ID:XOVWGW1L0394デフォルトの名無しさん (アウアウクー MM7b-BPOI)
2019/07/14(日) 23:28:34.66ID:uXqqdpfBM int x = 2*i + i++;
それでは、これの結果もまた未定義ですか?
それでは、これの結果もまた未定義ですか?
395デフォルトの名無しさん (ワッチョイ e301-S8wx)
2019/07/14(日) 23:55:54.94ID:XOVWGW1L0 iの評価は何回だ?
評価が複数回入る式は書くなということだ
仕事でそんなコード書いたらどやされるぞ
評価が複数回入る式は書くなということだ
仕事でそんなコード書いたらどやされるぞ
396デフォルトの名無しさん (アウアウクー MM7b-BPOI)
2019/07/15(月) 00:20:47.65ID:wok43DsHM 私は勉強のためにコードを書いています。
コードがどのような動きをするか興味があります。
int a = 1;
int x = (a = a) + a;
それでは、この式ではxは定義されますか?
左辺と右辺の評価順序に関わらず、答えは同じです。
コードがどのような動きをするか興味があります。
int a = 1;
int x = (a = a) + a;
それでは、この式ではxは定義されますか?
左辺と右辺の評価順序に関わらず、答えは同じです。
397デフォルトの名無しさん (アウアウエー Sa52-NWea)
2019/07/15(月) 00:33:43.29ID:mPPf+F39a されます
398デフォルトの名無しさん (ワッチョイ e301-S8wx)
2019/07/15(月) 00:46:03.12ID:E9YINa1F0 そんな無意味なコードから何を学ぼうとしているのか分からんわ
399デフォルトの名無しさん (ワッチョイ 4e63-P44A)
2019/07/15(月) 00:55:35.98ID:wne2EA+X0 優先順位や式の評価順が曖昧かもって考えるソース、
書いてて気持ち悪くなりませんか?私はなりますよ。
書いてて気持ち悪くなりませんか?私はなりますよ。
400デフォルトの名無しさん (ワッチョイ ba52-QpLE)
2019/07/15(月) 01:14:29.35ID:Voexy70f0 >>394
副作用完了点でググってこい
副作用完了点でググってこい
401デフォルトの名無しさん (アウアウクー MM7b-BPOI)
2019/07/15(月) 02:04:55.42ID:wok43DsHM while((s[i++] = t[j++]) != '\0') ;
元々気になったのは、tをsにコピーするこのコードです。
これを見て、他にインクリメントで簡略化出来そうなコードを考えています。
元々気になったのは、tをsにコピーするこのコードです。
これを見て、他にインクリメントで簡略化出来そうなコードを考えています。
402デフォルトの名無しさん (アウアウクー MM7b-BPOI)
2019/07/15(月) 02:10:16.53ID:wok43DsHM for(;t[j] != '\0'; j++){
s[i] = t[j];
i++;
}
s[i] = t[j];
従来の私なら、このようにコードを書いていました。
新しいコードの記述なら1行で書けます。
s[i] = t[j];
i++;
}
s[i] = t[j];
従来の私なら、このようにコードを書いていました。
新しいコードの記述なら1行で書けます。
403デフォルトの名無しさん (アウアウクー MM7b-BPOI)
2019/07/15(月) 02:19:48.51ID:wok43DsHM while((s[i++] = t[i + 1]) != '\0') ;
そこでtをsに1つずらしてコピーするコードをこのように書けないか考えていたら、未定義の問題が生じました。
私は演算規則から考えてこのコードは上手く働くと思いました。
そこでtをsに1つずらしてコピーするコードをこのように書けないか考えていたら、未定義の問題が生じました。
私は演算規則から考えてこのコードは上手く働くと思いました。
404デフォルトの名無しさん (アウアウエー Sa52-NWea)
2019/07/15(月) 03:09:03.53ID:mPPf+F39a 俺はmemcpy使う
性能は知らん
性能は知らん
405デフォルトの名無しさん (ワッチョイ 9a01-DHp5)
2019/07/15(月) 07:21:57.18ID:ex33LrHm0 せっかくC-FAQのリンク書いたのに…
バカって人の言う事聞かないからバカのままなんだな…
バカって人の言う事聞かないからバカのままなんだな…
406デフォルトの名無しさん (ワッチョイ ba52-QpLE)
2019/07/15(月) 07:41:01.06ID:Voexy70f0 >>401
「簡略化」とは、何を目指しているんだ?
行数が少ない方がいいとか考えているならバカな考えだからやめとけ。
コンパイラの最適化で同じコードになるような範囲の変形で行数を減らしたところで、可読性を下げてるだけで何のメリットもないぞ。
「簡略化」とは、何を目指しているんだ?
行数が少ない方がいいとか考えているならバカな考えだからやめとけ。
コンパイラの最適化で同じコードになるような範囲の変形で行数を減らしたところで、可読性を下げてるだけで何のメリットもないぞ。
407デフォルトの名無しさん (アウアウクー MM7b-BPOI)
2019/07/15(月) 08:20:49.21ID:wok43DsHM 私は行数の少なさというよりはむしろ見た目の単純さで読みやすいと感じます。
C-FAQのリンクは事実が書かれているのみで演算規則が無視される理由が理解できませんでした。
C-FAQのリンクは事実が書かれているのみで演算規則が無視される理由が理解できませんでした。
408デフォルトの名無しさん (ワッチョイ ba52-QpLE)
2019/07/15(月) 08:32:41.44ID:Voexy70f0409デフォルトの名無しさん (ワッチョイ 9a01-DHp5)
2019/07/15(月) 09:10:34.41ID:ex33LrHm0 どうせちゃんと読んでないか理解する能力がないんだろうな…
410デフォルトの名無しさん (ワッチョイ 73f6-AvHN)
2019/07/15(月) 09:22:44.79ID:IpJNQ16e0■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【ネット民のツッコミ】立憲・野田代表の「事実上の撤回」発言がトレンド、「高市さんそんな事は言ってない」「流石に無理あるだろw」 [1ゲットロボ★]
- 【金沢地裁】「風俗嬢に着せようと」南砺の高校で女子バレー部のユニホームを窃盗した男が説明 検察側、拘禁刑4年を求刑 [nita★]
- 【国際法を無視】日本での「中華人民共和国に台湾問題を論じる資格なし」との声に 中国外交部が厳しく反論… ★2 [BFU★]
- 【文春】元TOKIO・国分太一(51)「女性スタッフ2名への“わいせつ事案”」日テレ事情聴取の全貌が分かった! ★5 [Ailuropoda melanoleuca★]
- 【工作員】「X」のアカウント所在地公開機能が暴いた世論操作の実態 MAGA支持著名アカウントの多くが米国外から運営 日本にも波及 ★3 [ごまカンパチ★]
- 首相答弁「スパイ防止法、外国代理人登録法、ロビー活動公開法などについて速やかに法案を策定する」 [1ゲットロボ★]
- 神聖うんち帝国💩👑🏡
- 【高市悲報】中国「ふにゃふにゃ言いながら、時が自然に解決するのを期待する—そんなジャップ流は決して通用しない」 [115996789]
- 【悲報】ゼレンスキー大統領、和平案に大筋合意 ホンコンみたいなウヨ芸人を大統領にするとこうなる [455031798]
- 【画像】たまきん
- 東京の景観、高層マンション建てまくりで終わる😲 [521921834]
- 【未来の日本】ゼレンスキー大統領、和平案に大筋合意
