雑記帳
ここはhideyosiの雑記帳です。テケトーに書き散らしてるだけなので間違っていたりとは普通にしてます。信用度は相当低いことをあらかじめご了承を。またご覧のようにWikiを使ってますが、hideyosi意外は書き込めません。
  • ソース を表示
  • 型キャスト は削除されています。
3: 2007-03-08 (木) 14:35:25 ソース バックアップ No.3 を復元して編集 4: 2007-03-08 (木) 22:47:51 ソース バックアップ No.4 を復元して編集
Line 170: Line 170:
 p = 0x0010;  p = 0x0010;
- for(i = 0; i = 4; i++)+ for(i = 0; i = 4; i = i++)
   {    {
-       p = p + i; 
       printf("データは %d  16進数だと %x だよーん!\n",*p);        printf("データは %d  16進数だと %x だよーん!\n",*p);
 +       p = p + 1;
   }    }
Line 183: Line 183:
 データは 25  16進数だと 0x19 だよーん!  データは 25  16進数だと 0x19 だよーん!
 データは 26  16進数だと 0x1A だよーん!  データは 26  16進数だと 0x1A だよーん!
 +
 +
 +さて、このプログラム。コンパイルするとエラーというか、警告が出てきます。型が合わないんです。いったいどこが????
 +
 + p = 0x0010;
 +
 +なんと!ここです。おかしいですね?。pはアドレス変数として宣言しています。pに数値を入れればその数値の番地の内容が*pで取り出せるはずです。だからアドレス変数pに、0x0010番地を代入したのですが・・・
 +
 +
 +実はC言語では、同じ4バイトの変数や値と''アドレス変数''というのはまったく別で特別なものと考えられているようです。
 +
 +
 +
 +普通の型の変数でもバイト数が違ったりすると問題なのはわかりますよね?。アドレス変数はもっとまったく別で、''数値ですらない''くらいまったく別なんです。
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +----
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
・・・しかし、これでは問題が出てしまいます。そう、 ''p = p + i;''の部分です。 ・・・しかし、これでは問題が出てしまいます。そう、 ''p = p + i;''の部分です。