プロが教えるわが家の防犯対策術!

#include <stdio.h>
#define LINSIZ80

main()
{
charline[LINSIZ] = "ABCD";

printf("result1 = %x; %x\n", line, &line[0]);
printf("result2 = %c; %c; %d\n", *line, line[1], line[4]);
}

上記のプログラムの出力結果なのですが
result1 = bfbff750; 【1】
result2 = 【2】; 【3】; 【4】
この場合の【1】~【4】を教えてほしいのですがまずbfbff750が分かりません
【1】はAだと思うのですが%xの16進数だとどうなるか分かりません
【2】はLINSIZでしょうか?
【3】はBだと思います
【4】よくわからないです
よろしくお願いします

A 回答 (4件)

まじめに回答します。



【1】 : bfbff750
【2】 : A
【3】 : B
【4】 : 0

理由は省略します。
    • good
    • 0

#include <stdio.h>


#define LINSIZ 80

main()
{
char line[LINSIZ] = "ABCD";

printf("result1 = %x; %d\n", line, line);
printf("result1 = %x; %d\n", &line[0], &line[0]);
printf("result2 = %c; %x; %d\n", *line, *line, *line);
printf("result2 = %c; %x; %d\n", line[1], line[1], line[1]);
printf("result2 = %c; %x; %d\n", line[4], line[4], line[4]);
}
実行した結果は、
result1 = 22cc70; 2280560 は、lineのアドレス
result1 = 22cc70; 2280560 は、line[0]のアドレス
result2 = A; 41; 65 は、line[0]の内容
result2 = B; 42; 66 は、line[1]の内容
result2 = ; 0; 0 は、line[4]の内容
    • good
    • 0

bfbff750はline配列があるメモリー上のアドレスですね。


表示には%xではなく、%pを使うべきだとは思いますが。

> 【1】はAだと思うのですが%xの16進数だとどうなるか分かりません
違います。
そもそも、&ですよ。

> 【2】はLINSIZでしょうか?
違います。
%cですよ。

> 【3】はBだと思います
正解です。

>【4】よくわからないです
line[4]がABCDのDの次の値なのはわかりますか?
そこには文字列の終端記号が入っていますが、終端記号を表す数値は何でしょう?
    • good
    • 0

もうちょっとましなタイトルを付けようよと思いつつ, 実行してみればいいのでは?

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!