>Windows(というかIntel互換の環境)しか扱わないのであれば気にすることはありませんが、DSPなどを使い始めると、そういった状況に遭遇します。
携帯電話のソフトウェア開発をしてる会社を受ける予定もあるし、組込みの仕事だといろいろな環境があると思うので、処理系依存な言語使用はなるべく注意しておきたいと思ってます。
>Jis
規格はやっぱり読み難いです。
sizeof演算子を評価するのは可変長配列をオペランドにしたときだけなんですね。それ以外は評価しないということはマクロで整数に置き換えるのとほぼ同じということでしょうか。
プリプロセスみたいにコンパイル前に置き換わることはないと思うんですけど・・・・
>boxさん
>charが常に1バイトであることを知らなくて、
>sizeof(char)が1であることを定義していることは知っている、
>という状況が理解できません。
確かに全バイトのビットが変わらないとポインタ演算なんてごっちゃごちゃになりますね。
実はsizeof演算子を使ったことがない、って理由もあります。
charが8ビットより大きい環境だと、charだけが8ビットよりおおきいのかな?と思ってました。
例えばこんなイメージです
sizeof(char) = 9bit(1バイトより大きいけど、sizeofでは1が絶対返される)
sizeof(char[2])=18bit(2)
sizeof(int) = 32bit(4)
sizeof(int [2])=64bit(8)
たいちうさんの言ってるようなこと、といいたいですけど、ただchar型について勘違いしてたみたいですね。
C言語っていろんな処理系を想定してて、その処理系の最適な1バイトのビット数が違ったりするから、最低限表現できる範囲だけを決めている、ということでしょうか。
Javaみたいにきちっと決めてあると覚えるのは楽なんですけどね。
