!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/L9kLa326デフォルトの名無しさん (アウアウウー 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:IpJNQ16e0411デフォルトの名無しさん (ワッチョイ ba52-QpLE)
2019/07/15(月) 10:07:24.78ID:Voexy70f0 >>410
未規定の動作がたまたま自分の期待する動作と同じになったということが理解できてないんだろうね。人の話を聞かない相手に何を言ってもダメそうだね。
未規定の動作がたまたま自分の期待する動作と同じになったということが理解できてないんだろうね。人の話を聞かない相手に何を言ってもダメそうだね。
412デフォルトの名無しさん (アウアウクー MM7b-BPOI)
2019/07/15(月) 10:40:21.72ID:r5uSGSCiM 愛繆私は未定義な理由について理解できません。
なぜなら、演算規則に従い前置インクリメントを代入の評価より先に行えば、389の結果は一つと決まるからです。
しかし、評価順序が未定義となりコンパイラに依存となる理由は何ですか?
この式を定義することによる問題の例を理解したいです。
なぜなら、演算規則に従い前置インクリメントを代入の評価より先に行えば、389の結果は一つと決まるからです。
しかし、評価順序が未定義となりコンパイラに依存となる理由は何ですか?
この式を定義することによる問題の例を理解したいです。
413デフォルトの名無しさん (アウアウエー Sa52-NWea)
2019/07/15(月) 10:44:14.06ID:mPPf+F39a 左辺は
414デフォルトの名無しさん (アウアウクー MM7b-BPOI)
2019/07/15(月) 10:45:20.28ID:r5uSGSCiM つまり、私は未定義と規定されている理由を知りたいです。
定義することで発生する問題の例などです。
定義することで発生する問題の例などです。
415デフォルトの名無しさん (ワッチョイ ffa5-P44A)
2019/07/15(月) 10:49:35.01ID:6m2OA1zn0 この人の言ってる「演算規則」って何なんだろうね。
「C言語 "演算規則"」でググっても、それらしきものは出てこないし。
「C言語 "演算規則"」でググっても、それらしきものは出てこないし。
416デフォルトの名無しさん (アウアウクー MM7b-BPOI)
2019/07/15(月) 10:57:10.32ID:r5uSGSCiM int i = 0, j = 0;
int x = i++;
int y = ++j;
これです。xでは代入の後に後置インクリメントされます。(x = 0)
yでは代入の前に前置インクリメントされます。(y = 1)
s[i] = ++i + 1;
つまりこの式では代入の前に前置インクリメントされます。(次と等価です、)
i = i +1;
s[i(==1)] = i(==1) + 1;
int x = i++;
int y = ++j;
これです。xでは代入の後に後置インクリメントされます。(x = 0)
yでは代入の前に前置インクリメントされます。(y = 1)
s[i] = ++i + 1;
つまりこの式では代入の前に前置インクリメントされます。(次と等価です、)
i = i +1;
s[i(==1)] = i(==1) + 1;
417デフォルトの名無しさん (アウアウエー Sa52-NWea)
2019/07/15(月) 10:59:07.47ID:mPPf+F39a >>414
だから、左辺は
だから、左辺は
418デフォルトの名無しさん (アウアウクー MM7b-BPOI)
2019/07/15(月) 10:59:28.08ID:r5uSGSCiM これは、未定義と規定されていますが、理由が理解できません。
私が示した通り、定義することによる問題の例は何ですか?
私が示した通り、定義することによる問題の例は何ですか?
419デフォルトの名無しさん (アウアウクー MM7b-BPOI)
2019/07/15(月) 11:01:03.87ID:r5uSGSCiM 389の中では、左辺はs[1]です。
なぜなら、代入より前にiが前置インクリメントされます。
なぜなら、代入より前にiが前置インクリメントされます。
420デフォルトの名無しさん (ワッチョイ 5fc3-Z5NF)
2019/07/15(月) 11:01:37.73ID:r7SsHRFS0 i++のポストインクリメントとi+1の評価順が不定だから
421デフォルトの名無しさん (ワッチョイ e301-P44A)
2019/07/15(月) 11:02:04.90ID:E9YINa1F0 これ読んで分からないなら諦めろ
未規定の動作とは、複数考えられる動作のうち、どれが実行されるかの要求が課されない動作のこと。
未規定の動作への依存で移植性が低下します。
未規定の動作
・部分式が評価される順序、及び副作用が発生する順序。
ただし関数呼出しの()、&&, ||, ?:, カンマ演算子は除く。(6.5)
・代入演算子のオペランドが評価される順序。(6.5.16)
未規定の動作
http://www.c-lang.org/detail/unspecified_behavior.html
未定義の動作
http://www.c-lang.org/detail/undefined_behavior.html
未規定の動作とは、複数考えられる動作のうち、どれが実行されるかの要求が課されない動作のこと。
未規定の動作への依存で移植性が低下します。
未規定の動作
・部分式が評価される順序、及び副作用が発生する順序。
ただし関数呼出しの()、&&, ||, ?:, カンマ演算子は除く。(6.5)
・代入演算子のオペランドが評価される順序。(6.5.16)
未規定の動作
http://www.c-lang.org/detail/unspecified_behavior.html
未定義の動作
http://www.c-lang.org/detail/undefined_behavior.html
422デフォルトの名無しさん (アウアウクー MM7b-BPOI)
2019/07/15(月) 11:04:11.05ID:r5uSGSCiM i++のポストインクリメントとi+1の評価順が不定な理由は何ですか?
423デフォルトの名無しさん (アウアウクー MM7b-BPOI)
2019/07/15(月) 11:07:31.48ID:r5uSGSCiM i = i++;
これが未定義なのは理解できます。
しかし、389の中で私が示した通り、の定義をすると発生する問題の例は何ですか?
これが未定義なのは理解できます。
しかし、389の中で私が示した通り、の定義をすると発生する問題の例は何ですか?
424デフォルトの名無しさん (ワッチョイ 9a01-DHp5)
2019/07/15(月) 11:09:44.83ID:ex33LrHm0 未定義な理由?
言語作った奴がそう決めたから
要するに「仕様だから」
そう決めた理由は想像になるけど最適化しやすい(と言うかそうしないと最適化の妨げになる)と考えたんだろうと思うよ
言語作った奴がそう決めたから
要するに「仕様だから」
そう決めた理由は想像になるけど最適化しやすい(と言うかそうしないと最適化の妨げになる)と考えたんだろうと思うよ
425デフォルトの名無しさん (アウアウエー Sa52-NWea)
2019/07/15(月) 11:12:06.88ID:mPPf+F39a426デフォルトの名無しさん (ワッチョイ 17d2-rBUL)
2019/07/15(月) 11:12:37.37ID:3cpTbRIL0 インクリメントは式全体の前か後に実行されるからだろ
式の途中で実行されるとかあるの?
式の途中で実行されるとかあるの?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 【広島】「万引きした人を追跡」コンビニ店員の男性(46)を果物ナイフで刺したか 中国籍の少年(17)を殺人未遂容疑で現行犯逮捕 [ぐれ★]
- 【地震】青森県で震度6強 長周期地震動も 津波注意報すべて解除 ★7 [ぐれ★] [ぐれ★]
- 【サッカー】58歳カズ「オファーが来ている」 J3福島と近日中にも交渉 早ければ年内にも決断 [征夷大将軍★]
- 【速報】気象庁は津波注意報すべて解除 [蚤の市★]
- 【実況】博衣こよりのえちえち朝こよ🧪
- (´・ω・`)おはよ
- さかまた「過呼吸になった」かなた「耳聞こえない」ござる「声出ない」まつり「ご飯食べれない」
- 【画像】カリカリ女、脱いだらすごい😨 [632966346]
- くそしてかがやけ
- 🪬本日のコンマ占い🧿
