K.Maebashi's BBS

ご自由に書き込んでください。雑談も可。
テスト書き込みの類はテスト用掲示板にどうぞ

[日付順表示] [日付順インデックス] [スレッド順インデックス]

新規投稿 | 開設者ホームページへ戻る | ヘルプ

[1796] Re:char hoge = 'A';
投稿者:yuya
2012/02/27 12:37:08

すみません、たぶん自己解決しました。 JIS X3010:2003 6.4.4.4 文字定数 | |意味規則 単純文字定数は、型intをもつ。 |(中略) |単純文字定数が単一の文字又は逆斜線表記を含む場合、その値はその単一の文字又は逆斜線表記の値をもつ |char型のオブジェクトをint型に変換したときの結果の値とする。 |(中略) |例2. 整数に対し2の補数表現を用い、型charをもつオブジェクトに対して8ビットを用いる処理系を考える。 |型charがsigned charと同じ範囲の値をもつ処理系では、単純文字定数'\xFF'は値-1をもつ。型charが |unsigned charと同じ範囲の値をもつ場合、'\xFF'は値+255をもつ。 この例2を見ると、文字定数の値が、「charがsignedかunsignedか」に連動して定まることになりますね。つまり、int型のモノが「char型に対する扱い」に依存するんですね。知りませんでした。 ということは、無印のcharがsignedの処理系であろうとunsignedの処理系であろうと、文字定数を代入して値が変わってしまう心配はない、と。 一番気になっていたのは、「等しいはずの文字を比較したのに『等しくない』と判定されてしまうかも」ということだったのですが、これで心配はなくなりました。 # でもEOFとかち合ったりしないのかなぁ……
[この投稿を含むスレッドを表示] [この投稿を削除]
[1795] Re:char hoge = 'A';
投稿者:yuya
2012/02/27 10:08:44

ありがとうございます。 >これが > >>char hoge[] = {'ア', 'イ', 'ウ', '\0'}; > >だったら間違いなく違和感があると思うのですが。 なるほど、考えてみれば半角カナで実験してみればよかったですね。 #include <stdio.h> int main(void){ printf("%d\n", 'ア'); return 0; } VCでコンパイルして実行すると -79 あり?どうなってるんだ・・・
[この投稿を含むスレッドを表示] [この投稿を削除]
[1794] Re:char hoge = 'A';
投稿者:(ぱ)こと管理人
2012/02/27 01:45:30

どうもです。 >「A」の文字コードは決まっていないし、charがsignedになるかunsignedになるかは処理系によるので、結局この代入自体が処理系定義になるわけですよね。 確かにそうなりそうに思うのですが…… >よくchar配列の初期化の例で、 > >char hoge[] = "ABC"; > >は > >char hoge[] = {'A', 'B', 'C', '\0'}; こういう説明は私もしていますし、でも確かに処理系定義だと思います。 これが >char hoge[] = {'ア', 'イ', 'ウ', '\0'}; だったら間違いなく違和感があると思うのですが。 まあ、'A'がunsigned char側に割り当てられるような処理系はまずないだろうという前提を、たいていのCの入門書著者は置いてしまっているのだと思います。私も含めて。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1793] Re:char hoge = 'A';
投稿者:yuya
2012/02/21 04:04:30

(ぱ)さん、ありがとうございます。 「A」の文字コードは決まっていないし、charがsignedになるかunsignedになるかは処理系によるので、結局この代入自体が処理系定義になるわけですよね。 よくchar配列の初期化の例で、 char hoge[] = "ABC"; は char hoge[] = {'A', 'B', 'C', '\0'}; の略であって……といった説明になるわけですが、この場合も同様だとすると、 あれれ?そんな処理系定義な例で説明がなされているのか?と疑問に思ってしまったわけです。 (すみません、もの凄くアホな勘違いをしているかもしれません。)
[この投稿を含むスレッドを表示] [この投稿を削除]
[1792] Re:char hoge = 'A';
投稿者:(ぱ)こと管理人
2012/02/21 03:15:15

すみません、しばらくここを放置してしまいました。 >C言語において、文字定数は1バイトの表現に収まることが保証されていますが、 >たとえば'A'が200のような値をとっていけないことはないですよね。 >すると、charがsignedな処理系で char hoge = 'A'; と書くと、未定義動作になるのでしょうか? 'A'自体の型はintですので、普通にintからsigned charへの型変換と考えると、 X 3010:2003の6.3.1.3によれば >そうでない場合,すなわち,新しい型が符号付き整数型であって,値がその型で表現できない場合は, >結果が処理系定義の値となるか,又は処理系定義のシグナルを生成するかのいずれかとする。 なので、処理系定義ですかね。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1791] char hoge = 'A';
投稿者:yuya
2012/02/19 11:24:57

C言語において、文字定数は1バイトの表現に収まることが保証されていますが、 たとえば'A'が200のような値をとっていけないことはないですよね。 すると、charがsignedな処理系で char hoge = 'A'; と書くと、未定義動作になるのでしょうか?
[この投稿を含むスレッドを表示] [この投稿を削除]
[1790] fd
投稿者:aa
2012/02/16 19:29:55

fd
[この投稿を含むスレッドを表示] [この投稿を削除]
[1789] test
投稿者:test
2012/02/05 21:15:15

test
[この投稿を含むスレッドを表示] [この投稿を削除]
[1788] 無題
投稿者:くそ河野
2012/01/23 13:50:01

cvgcgdghdgおっぱ
[この投稿を含むスレッドを表示] [この投稿を削除]
[1787] 無題
投稿者:くそ河野
2012/01/23 13:49:22

ああああなんあなん
[この投稿を含むスレッドを表示] [この投稿を削除]
[1786] 無題
投稿者:キリン
2012/01/23 13:49:13

tinkoとmankoを合体させよう
[この投稿を含むスレッドを表示] [この投稿を削除]
[1785] 無題
投稿者:くそ河野
2012/01/23 13:48:52

おppai
[この投稿を含むスレッドを表示] [この投稿を削除]
[1784] 無題
投稿者:はなくそ
2012/01/23 13:48:15

どうもはなくそです
[この投稿を含むスレッドを表示] [この投稿を削除]
[1783] 無題
投稿者:キリン
2012/01/23 13:47:21

鼻隠せ
[この投稿を含むスレッドを表示] [この投稿を削除]
[1782] 無題
投稿者:くそ河野
2012/01/23 13:46:48

河野、がやべぇ鼻の中ほじくりまはわしてる
[この投稿を含むスレッドを表示] [この投稿を削除]
[1781] 無題
投稿者:くそ河野
2012/01/23 13:45:25

mんこのー  おしりのなかを  なまないでくださいー
[この投稿を含むスレッドを表示] [この投稿を削除]
[1780] 無題
投稿者:キリン
2012/01/23 13:45:17

鼻の整形をひきうけましょうか?
[この投稿を含むスレッドを表示] [この投稿を削除]
[1779] 無題
投稿者:くそ河野
2012/01/23 13:43:57

ぱぱぱぱぱぴい
[この投稿を含むスレッドを表示] [この投稿を削除]
[1778] 無題
投稿者:キリン
2012/01/23 13:43:37

河野逃げるな
[この投稿を含むスレッドを表示] [この投稿を削除]
[1777] 無題
投稿者:
2012/01/23 13:42:10

鼻くそ見えてるよ
[この投稿を含むスレッドを表示] [この投稿を削除]
[1776] 無題
投稿者:キリン
2012/01/23 13:41:50

鼻デカ
[この投稿を含むスレッドを表示] [この投稿を削除]
[1775] 無題
投稿者:くそ河野
2012/01/23 13:41:04

ま こ
[この投稿を含むスレッドを表示] [この投稿を削除]
[1773] 無題
投稿者:
2012/01/23 13:39:28

鼻でか
[この投稿を含むスレッドを表示] [この投稿を削除]
[1772] 無題
投稿者:くそ河野
2012/01/23 13:39:24

洋一郎が怒られるのこわいからにげた
[この投稿を含むスレッドを表示] [この投稿を削除]
[1771] 無題
投稿者:くそ河野
2012/01/23 13:37:51

まえののー  おしりのなかを  なめないでくださいー そこに
[この投稿を含むスレッドを表示] [この投稿を削除]
[1770] 無題
投稿者:
2012/01/23 13:37:27

鼻でか
[この投稿を含むスレッドを表示] [この投稿を削除]
[1769] 無題
投稿者:you
2012/01/23 13:37:06

どうすんの?
[この投稿を含むスレッドを表示] [この投稿を削除]
[1768] 無題
投稿者:くそ河野
2012/01/23 13:36:36

あああ
[この投稿を含むスレッドを表示] [この投稿を削除]
[1767] 無題
投稿者:you
2012/01/23 13:33:36

千の風になっての替え歌を作りたいんだが。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1766] Re:掲示板を移行しました
投稿者:a
2012/01/22 22:18:48

>仕様について簡単に説明します。 > >・発言内容は全て<pre>で囲まれます。ソースリストを載せるのに便利にするためです。 > 適当な位置で改行を入れてください。 >・でもやっぱり改行を入れ忘れる人もいるので、プレビュー表示をつけました。 > 確認してから「送信」をクリックしてください。 >・タグは全無効です。<font color="red">ほらね</font> >・クリッカブルURLの機能があります。 > http://kmaebashi.com > タグは無効なので<a>タグは書けません。 >・現状では削除機能がないので削除用パスワードは単なるお飾りです。 >・スレッド表示時、スレッドトップの「▼」をクリックすると、そのスレッドの > 発言を一覧表示します。 >・一画面あたりの表示数は以下の通りです。 > - 日付順表示…30 > - 日付順インデックス…50 > - スレッド表示…20スレッド >
[この投稿を含むスレッドを表示] [この投稿を削除]