Google グループは Usenet の新規の投稿と購読のサポートを終了しました。過去のコンテンツは引き続き閲覧できます。
表示しない

single quoteで4バイトの文字列

閲覧: 18 回
最初の未読メッセージにスキップ

D.Miyasaka

未読、
2003/10/17 13:49:172003/10/17
To:
C++特有かCの問題なのかはっきりしないので、fj.comp.lang.cと
fj.comp.lang.c++の両方に投稿させていただきます。

あるオープンソース(C++)をいじっているのですが、それはMac OS X向けは
Project Builderで、Windows向けはVisual C++でコンパイルさせる前提です。
無料で入手できるソースなのにWindows向けが有料の開発環境では不公平と
思いましたのでBorland C++の無料提供版で試したところ、うまく行きません
でした。問題箇所を追いつめたところ、

unsigned long chunk = '0MFS';

というようにsingle quoteで4バイトの文字列を囲んでいる箇所とわかりました。
chunkに入る値がProject BuilderとVisual C++では0x304d4653に対し、
Borland C++では0x53464d30であり、ちょうどエンディアンがひっくり返った
ような結果となりました。そこまではいいとして、疑問に思ったのは
single quoteで4バイトの文字列を定数にするというのは標準規格になかった
ように思うのですが、これはどうなのでしょうか?ひょっとして自分が知らない
間に規格になったのか、あるいは将来、規格になるものなのでしょうか。

--
D.Miyasaka <mailto:miya...@anet.ne.jp>

Masahiro KONISHI

未読、
2003/10/17 15:02:152003/10/17
To:
小西です。

17 Oct 2003 17:49:17 GMT に
D.Miyasaka <miya...@anet.ne.jp> さんは書きました:

> unsigned long chunk = '0MFS';
>
> というようにsingle quoteで4バイトの文字列を囲んでいる箇所とわかりました。
> chunkに入る値がProject BuilderとVisual C++では0x304d4653に対し、
> Borland C++では0x53464d30であり、ちょうどエンディアンがひっくり返った
> ような結果となりました。そこまではいいとして、疑問に思ったのは
> single quoteで4バイトの文字列を定数にするというのは標準規格になかった
> ように思うのですが、これはどうなのでしょうか?ひょっとして自分が知らない
> 間に規格になったのか、あるいは将来、規格になるものなのでしょうか。

手元にある ISO/IEC 14882-1998 の 2.13.2 Character literals によれば,

| A character literal is one or more characters enclosed in single quotes,
| (中略). An ordinary character literal that contains more than one
| c-char is a multicharacter literal. A multicharacter literal has type
| int and implementation-defined value.

ということなので,C++ では標準規格に入っているらしいです。

--
Masahiro KONISHI / mkon...@sea.plala.or.jp

D.Miyasaka

未読、
2003/10/18 0:39:132003/10/18
To:
C++の問題とわかりましたのでFolowup-To:fj.comp.lang.c++
とさせていただきます。

お答えいただき、ありがとうございます。

>手元にある ISO/IEC 14882-1998 の 2.13.2 Character literals によれば,
>
>| A character literal is one or more characters enclosed in single quotes,
>| (中略). An ordinary character literal that contains more than one
>| c-char is a multicharacter literal. A multicharacter literal has type
>| int and implementation-defined value.
>
>ということなので,C++ では標準規格に入っているらしいです。

“multicharacter literal”と言うんですね。用語自体がわからなかったので
どう検索してよいか悩んだのでおお助かりです。int型として解釈されること。
implementation-defined valueなので、コンパイラによって解釈が変わる
可能性があることがわかって納得です。

ちなみに“multicharacter literal C++”でGoogleで検索したら、いろいろと
見つかりました。ISO/IEC 14882-1998も見つかりましたし、面白いと言ったら
当事者に怒られそうですが、
http://gcc.gnu.org/ml/gcc-help/2003-03/msg00253.html
で、これは標準C++じゃないよ、というメールに対して反論があったりとか。

# しかしC++はどんどん自分が知らない仕様を取り込んで
# この先どうなるんでしょうね? もうついていけません。

--
D.Miyasaka <mailto:miya...@anet.ne.jp>

Fujii Hironori

未読、
2003/10/18 4:01:332003/10/18
To:
At 17 Oct 2003 17:49:17 GMT,

D.Miyasaka <miya...@anet.ne.jp> wrote:
>
> ような結果となりました。そこまではいいとして、疑問に思ったのは
> single quoteで4バイトの文字列を定数にするというのは標準規格になかった
> ように思うのですが、これはどうなのでしょうか?ひょっとして自分が知らない
> 間に規格になったのか、あるいは将来、規格になるものなのでしょうか。

それ知ったとき私もびっくりっしました。
C言語の本や仕様書の「文字定数」のところでも調べると載ってますよ。

---
藤井宏憲

SAITOH akinori

未読、
2003/10/19 11:05:332003/10/19
To:
大阪大学の齊藤です

D.Miyasaka wrote:

> C++の問題とわかりましたのでFolowup-To:fj.comp.lang.c++
> とさせていただきます。

Cがすでに持っていた機能です。
ANSI以前のCにも有ったはず。

齊藤明紀 sai...@ist.osaka-u.ac.jp

koun...@mbh.nifty.com

未読、
2003/10/20 22:03:392003/10/20
To:
鴻池です。

"D.Miyasaka" <miya...@anet.ne.jp> wrote in message
news:20031018133...@news.cis.dfn.de...

> >手元にある ISO/IEC 14882-1998 の 2.13.2 Character literals によれば,
> >
> >| A character literal is one or more characters enclosed in single
quotes,
> >| (中略). An ordinary character literal that contains more than one
> >| c-char is a multicharacter literal. A multicharacter literal has type
> >| int and implementation-defined value.
> >
> >ということなので,C++ では標準規格に入っているらしいです。
>
> “multicharacter literal”と言うんですね。用語自体がわからなかったので
> どう検索してよいか悩んだのでおお助かりです。int型として解釈されること。
> implementation-defined valueなので、コンパイラによって解釈が変わる
> 可能性があることがわかって納得です。

ARMの第1版(足立高徳、小山裕司訳 1992年)のP10の2.5リテラルの
2.5.2文字定数の項目に以下のような文があります。

文字定数は、’x’のように、一重引用符で囲まれた1つ以上の文字である。単一文
字の文字定数(単一文字定数)は型charを持つ。(中略)多文字定数は型int
を持つ。多文字定数の値は、実装依存である。

上のISO/IEC 14882-1998 の 2.13.2 Character literalsの内容とほぼ同じような記
述のように思います。ということは、最近標準規格になったのではなく、当初(?)
から規定されていたのではないでしょうか。

--
******************************
keizi kounoike
******************************

Yuuichi Naruoka

未読、
2003/10/23 7:03:092003/10/23
To:
 成岡@DTI静岡です。

"SAITOH akinori" <sai...@ist.osaka-u.ac.jp> wrote in message news:bmu9av$tq9$1...@newsserv.ics.es.osaka-u.ac.jp...


> D.Miyasaka wrote:
>
> > C++の問題とわかりましたのでFolowup-To:fj.comp.lang.c++
> > とさせていただきます。
>
> Cがすでに持っていた機能です。
> ANSI以前のCにも有ったはず。

 と言うよりANSI以前に“は”あった、と言った方が正しいかもしれません。

 大昔に私が使ったLattice C Ver. 4(MS-DOS版)にはこの機能がありましたが、
その後扱ったHP-UX (Ver.は忘れた(^^;)のC にはありませんでした。

 ちなみにこの機能、3文字時が厄介でした。3&4文字の場合32bit 整数にな
るのですが、3文字の場合1文字分の8bitが不定になったような記憶があります。
# strcmp()ではなく<>= で比較できるので楽でしたが。

--
成岡@DTI(yn...@jade.dti.ne.jp)

Don Carlos

未読、
2003/11/03 0:55:322003/11/03
To:
koun...@mbh.nifty.com wrote:

> ?????


>
> "D.Miyasaka" <miya...@anet.ne.jp> wrote in message
> news:20031018133...@news.cis.dfn.de...
>

>> >????? ISO/IEC 14882-1998 ? 2.13.2 Character literals ?????


>> >
>> >| A character literal is one or more characters enclosed in single
> quotes,

>> >| ????. An ordinary character literal that contains more than one


>> >| c-char is a multicharacter literal. A multicharacter literal has type
>> >| int and implementation-defined value.
>> >

>> >?????????C++ ??????????????????
>>
>> ?multicharacter literal???????????????????????
>> ??????????????????????int????????????
>> implementation-defined value???????????????????
>> ??????????????????
>
> ??????????????????????????????????????
> ??????????????????????????
>
> ??????????????????????????????????????
> ??????????????????????????????????????
> ?????????????????????
>
> ??ISO/IEC 14882-1998 ? 2.13.2 Character literals????????????
> ??????????????????????????????????????
> ????????????????????
>
Доброе время суток!
Статья интересна, но не познавательна.

С Уважением, Don Carlos.
--
------------------------------------------------------------------
`````````````````````````Don Carlos`````````````````````````
------------------------------------------------------------------

koun...@mbh.nifty.com

未読、
2003/11/03 5:25:322003/11/03
To:
"Don Carlos" <vla...@rol.ru> wrote in message
news:bo4qof$c5q$1...@news.rol.ru...

> koun...@mbh.nifty.com wrote:
> >
> > "D.Miyasaka" <miya...@anet.ne.jp> wrote in message
> > news:20031018133...@news.cis.dfn.de...
> Доброе время суток!
> Статья интересна, но не познавательна.
>
> С Уважением, Don Carlos.

えっ?。できれば、日本語でお願いします。何を言っているのかさっぱりわかりませ
ん。
(このアホとでも書かれているのだろうか。)

To Mr Don Carlos

Takeshi SHIGIHARA

未読、
2003/11/03 22:06:572003/11/03
To:
koun...@mbh.nifty.com wrote:

> "Don Carlos" <vla...@rol.ru> wrote in message
> news:bo4qof$c5q$1...@news.rol.ru...
>
>>koun...@mbh.nifty.com wrote:
>>
>>>"D.Miyasaka" <miya...@anet.ne.jp> wrote in message
>>>news:20031018133...@news.cis.dfn.de...
>>
>>Доброе время суток!
>>Статья интересна, но не познавательна.
>>
>>С Уважением, Don Carlos.
>
>
> えっ?。できれば、日本語でお願いします。何を言っているのかさっぱりわかりませ
> ん。

http://worldlingo.com/products_services/worldlingo_translator.html
にて翻訳してみたところ
-------------------------------
よい時刻!
記事は興味深いが、認識でない。

点と、ドンCarlos 。
-------------------------------
だそうで。

つまり、読めないよ~という悲鳴のようです……

----- Takeshi SHIGIHARA
cyg...@tka.att.ne.jp
cyg...@po.jah.ne.jp -----

新着メール 0 件