なぜfputwc()
、putwc()
とタイプwchar_t
代わりのwint_t
のputwchar()
テイク引数? これは、対応する非ワイド文字関数fputc()
、putc()
とputchar()
、int
を取る、ないchar
と矛盾します。 wchar_t
がWEOF
値を保持するために必要とされ、char
がEOF
値を保持する必要がないためである矛盾
矛盾
答えて
。 char
について
、fputc()
、putc()
とputchar()
機能はEOF
そうint
をそれらの両方を保持するために必要とされる負の数であってもよいunsigned char
とEOF
範囲で両方の値を保持することができる値を受け入れる必要があります。
はwchar_t
のに対し、それ自体が最大のロケールとしてだけでなくWEOF
文字を保持するために必要です。 WEOF
は、wchar_t
の内部に収まる値を表しますが、ロケールと重複しません。
これが原因char
とwchar_t
の名前ではさらに混乱作られて、あなたはサイズはアーキテクチャ上のが、の大きさに依存しないint
としてchar
が、それ以上のものとしてwchar_t
を見るべきではありません最大のロケール(およびWEOF
の値)。 201X 7.19.2:
WEOF
型の定数式に展開ISO/IEC 9899を引用 Why putchar, toupper, tolower, etc. take a int instead of a char?
wint_t
値がdoe拡張文字セットのメンバーには対応していません。これは、ファイルの末尾がであることを示すために、この節のいくつかの関数によって受け入れられ(返され)、つまり、 ストリームからの入力は受け入れられません。 拡張文字セットのメンバーに対応しないワイド文字値としても使用されます。
マクロ
WEOF
値拡張文字セットの任意のメンバーとは異なるタイプwint_t
の定数式に評価されます。
Quoting C++ Reference:その範囲の値のサポートされるロケールのうち指定された最大の拡張文字セットのすべてのメンバーのための個別のコードを表すことができる
wchar_t
タイプ。c++では、
wchar_t
は異なる基本的なタイプです(したがって、<cwchar>
も他のヘッダーにも定義されていません)。cでは、これは整数型の
typedef
です。
- 1. 矛盾
- 2. Hibernateの矛盾
- 3. 矛盾はIllegalArgumentException
- 4. 矛盾geom_text
- 5. C#は矛盾
- 6. 矛盾 - ガレラクラスタ
- 7. 矛盾アクセシビリティエラーが
- 8. LOCALDATEの矛盾
- 9. 矛盾統計
- 10. 矛盾ファイルパスのアレイ
- 11. 矛盾RSPEC /カピバラは
- 12. opencpu矛盾JSONシリアライズ
- 13. Jquery +矛盾なし
- 14. 値矛盾動作
- 15. PHPのstrtotime矛盾
- 16. のHTML DOM矛盾
- 17. 矛盾するエラー?
- 18. 矛盾置きID
- 19. "haltingproblem"矛盾の証
- 20. エクリプス:矛盾警告
- 21. jqGrid - rowObjectの矛盾?
- 22. Djangoカスタムバックエンドドキュメントの矛盾
- 23. Luaのメタテーブル矛盾
- 24. オブジェクティブC:Cell.ImageView.imageサイズ矛盾
- 25. のSimpleDateFormat矛盾解析エラー
- 26. mySQLのダンプの矛盾
- 27. CSSの枠線の矛盾
- 28. C#ジェネリックと多型:矛盾?
- 29. Pythonのエスケープシーケンスの矛盾
- 30. @NotNullと@Nullable、矛盾Javaアノテーション
なぜこのCコードでgccは警告を出さないのですか? 'void f(char c){} void main(void){f((int)65);}'引数の型の不一致はありませんか?なぜ次のコードは警告も出さないのですか? '... putwchar(getwchar()); ...'定義によると、 'putwchar'の引数の型は** wchar_t **ですが、' getwchar'の戻り値の型は** wint_t **です。もう一度 - タイプミスマッチ。なぜ警告はコンパイラによって生成されないのですか? –
** WEAT値を保持するために** wchar_t **が必要な場合は、なぜ** wint_t **が存在するのですか? –
'WEOF'の正確な値は?リンクを引用するhttp://www.gnu.org/software/libc/manual/html_node/Extended-Char-Intro.html:「ISO 10646は31ビットの大きなコードスペースになるように設計されました」したがって、あなたの答えによると、 'WEOF'は有効なiso10646文字の場所を占有しなければなりません。これは 'EOF'との矛盾です:その値は有効な8ビット文字と一致しないように選択されました。なぜWEOF値が有効なiso10646文字の範囲から取られたのかを説明してください。 –