• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:putchar(getchar())はなぜできない)

putchar(getchar())はなぜできない

このQ&Aのポイント
  • プログラムでputchar(getchar())ができない理由について
  • プログラムの関数と数学の関数の違いや変数の型による制約
  • Haskellのモナドとの関連性

質問者が選んだベストアンサー

  • ベストアンサー
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

> 何故できないのか? まともな(ホスト環境の)処理系ならできるはずです。 > 途中は省略しますが、 省略部分に原因がある可能性はあります。 putcharは、第2引数にstdoutを指定したputcの呼び出しに評価されます。 また、putcは副作用のあるマクロとして定義してもよいことになっています。 <stdio.h>をインクルードすればマクロ版のputcharが、<stdio.h>をインクルードしなければ関数版のputcharが使われるとかではないのでしょうか? (処理系不明なのでそれ以上正確なことはわかりません)

PHYOPHYO
質問者

補足

確かにできました。 一字入力ミスでした。 一度信じこむと自分ではなかなかミスが見つかりません。 ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

すくなくとも、手許Macのclang, gcc では期待通りに標準入力がそのまま標準出力に送られてますが。 「できない」ってどんな状況を言ってますか? 後半は何がいいたいかわからないですが、おそらくは関係ありません。 > int cでcがchar型でないこと getcharの戻り値はintです。 putcharの引数はintです。 > 'A'とかの定数なら領域として確保 int cで領域は確保されます。 むしろ、'A'の方が(最適化などによって)領域を使わない数値に置き換えられます。

すると、全ての回答が全文表示されます。
回答No.1

> putchar(getchar())はなぜできない 処理系が規格を満たしていないから > c=getchar(); > putchar(c); > を > putchar(gerchar()); > とすることは何故できないのか? 変数cに値が代入されないから または putchar(gerchar()); のpの文字コードが違っているから

すると、全ての回答が全文表示されます。

関連するQ&A