このコード読めるかな?【VOICEVOX】【プログラミング】

Поделиться
HTML-код
  • Опубликовано: 10 янв 2025

Комментарии •

  • @セイゲドン
    @セイゲドン Месяц назад +38

    できるようになるための知識ではなくやらないようにするための知識

  • @magicet_
    @magicet_ Месяц назад +19

    逆にAIに実行結果を書く発想がよくわからない…

  • @ぽんかん-q9s
    @ぽんかん-q9s Месяц назад +7

    これTwitterで見たけど、こんなん出題してどうするねんって感じよな

  • @REIA-t1
    @REIA-t1 Месяц назад +11

    ChatGPTならPython実行できるからいいかなぁと思ったり()

  • @Anonymous47293
    @Anonymous47293 Месяц назад +8

    うぽつです。
    何らかの未定義動作踏んでそうだなと思いました。
    その式の評価順序が定まってるのだとしたらだいぶ重箱の隅感ありますね笑

  • @お茶-q8h
    @お茶-q8h 25 дней назад +1

    17がどっから出てきたのか分からなかったのですが、言語によるのですね。初めて知りました。

  • @馬鹿は伝染病で移る
    @馬鹿は伝染病で移る Месяц назад +6

    「パッと見て解らんのは書くな!
    お前だけが解ってるのは、それは単なるメモ帳でしかない!他の人間が見て解らないのは、せん○りで、やってる本人は気持ちいいかもしれんが端から見たらキモいだけだ!」
    機械の作業マニュアルを書く時の鉄則ですかね。
    6÷2(1+2)と同じで聞く側の解釈で変わるのは書くなとw

    • @まろまろ-g4u
      @まろまろ-g4u Месяц назад +2

      これ本当にそう
      昔いた会社で自己満足のコード書く奴がいてはらわたが煮え繰り返った

  • @heri3x285
    @heri3x285 Месяц назад +2

    答えはずんだもんの鼻から悪魔が飛び出すなのだ

  • @wooolwooolify
    @wooolwooolify Месяц назад +7

    調べたらJavaは言語仕様で順序が決まってるから環境に寄らないらしい
    Cは未定義動作でコンパイラの最適化で入れ替わったりするらしい
    ただそもそもコンパイルで警告出るからまともな職場なら製品には入らん

  • @Automaton_in_a_Flask
    @Automaton_in_a_Flask Месяц назад +4

    “s+= “の部分を見た時に、”s+=”のまま処理するものと”s=s+”に読み変えて処理するものの2通りがある…のか?
    不思議だなあ…

    • @あうら-g2j
      @あうら-g2j Месяц назад +1

      +=の前を先に評価するか、+=の後を先に評価するか、の違いですね。

  • @fugahoge873
    @fugahoge873 Месяц назад +2

    学生は自分でコード評価せずに回答として出すから困る(できない子に限ってする)

  • @oityo-u3x
    @oityo-u3x Месяц назад +2

    Cはコンパイルすると直で機械語になるから最終的に出力される機械語をイメージすると何故17になるか分かりやすいかも。
    &sに1加算→&sの値とvalueの合計をレジスタに保存→&sの値とレジスタの値の合計を&sに保存みたいに翻訳されると17になって当然と言える。
    C以外は右辺のインクリメントをただのs+1として中間コードに翻訳してそう。(javascriptは知らんけど)

  • @kaede3324
    @kaede3324 Месяц назад +5

    Pythonがインクリメントの使用を封じてるのはこういう例があるから?🤔

  • @cook_kawasaki
    @cook_kawasaki 23 дня назад +3

    まずこんなコード書くな

  • @tsutaya3_7_
    @tsutaya3_7_ Месяц назад +1

    angular、typescriptが苦手すぎて求める動きにならない実装内容に対して、どう修正すればいいのかわからないときに
    駄目元でCopilotにあれこれ聞いてみたらやり取りは多かったが
    解消できたことが最近あってAI馬鹿にならないなと感心した。(どうせ答えにならず、頓珍漢なこと言ってくるんだろうなと思って期待してなかった)
    アシスタントとか、講師をイメージして使うと結構いいもんなんだなと。

  • @kawamo55
    @kawamo55 Месяц назад

    評価順序が違うのでこうなるんですね、Javaは+=の評価順序が左から右なのではじめのSは6でC/C++は右から左なので先に++Sが実行されるので7になるということですねぇ。
    Javaやばいな・・・

  • @Scr_MIYUKINNGU
    @Scr_MIYUKINNGU Месяц назад +1

    これを考えるにはコンパイラ側を理解しないといけない
    自分はC++人間なので下記のように考えるけど。
    +=はアセンブリ(機械語)にも存在する計算なのでそのまま変換される
    と言うよりむしろ
    a = a + b
    だと
    temp = a
    temp += b
    a = temp
    っていうコードに変換される
    ちなみにこのことからa = a + bよりa += bの方がやや高速ってのは有名な話
    なのでs += val + ++sは
    temp = val
    temp += ++s
    s += temp
    になるので17
    あと、計算の順序(結合規則)としては基本、左から右(一部の演算子は右から左)なのでa + b + cという処理があればコンパイラは(a + b) + cと解釈する
    これ、C++の常識ね()
    てか16を出す言語があることが衝撃
    ワカリニクイ

    • @katsuk6295
      @katsuk6295 22 дня назад

      「インクリメント・デクリメントは単体で使え」と言われる理由がよく分かりますね

  • @二階堂盛義-t2e
    @二階堂盛義-t2e 13 дней назад

    16かと思ったら17もあるのか、めんどい

  • @ぬるぽッ
    @ぬるぽッ Месяц назад +13

    こんなクソコード実際に使ったりするのかな

  • @makakikusu
    @makakikusu 22 дня назад

    少なくとも実務でこれは…

  • @kumonopanya
    @kumonopanya 9 дней назад

    S += val + s++; / このようにsの前か後ろにインクリメンタル記号を置けるのがおかしいのだ。

  • @3o1415926535
    @3o1415926535 26 дней назад

    s = 10; s += (s = 3) とやった場合もおそらく大勢の言語は 13 を返すと思うのだ

  • @redundant122
    @redundant122 Месяц назад +4

    副作用か

  • @resistan-y1h
    @resistan-y1h Месяц назад +4

    こんなクソコードに出会う事がレアだからその時に言語仕様調べればいいような。
    意地悪問題でしかないw

  • @anabis173
    @anabis173 Месяц назад +1

    こんなクソコードPRしてきたら秒で却下する自信がある(たまにいるから困る

  • @sanadukigin9724
    @sanadukigin9724 Месяц назад +2

    そういや-5 % 3や5 % -3も言語によって違いますが、なんかBronzeあたりで絶対値最小剰余の仕様をきかれたりしてそうですね。

  • @Syuririn
    @Syuririn Месяц назад

    Bronzeでこんなの出るのか。

  • @hirokifire
    @hirokifire Месяц назад +3

    s += val + s
    も気持ち悪いな
    s = val + s + s
    ならまだわかる

  • @FireBirdLion
    @FireBirdLion Месяц назад +3

    ふむふむ
    サムネ見て 16
    いちおう正解?
    言語によって違うんだ……