- ベストアンサー
printfの出力について
初歩的な事ですが、 short *a; short b; a = &b; printf("%04x\n",x++); だとどのように出力されるのですか? 本を読むと、4つの幅をもたせて16進数で表すと思うのですが、 実行してもよくわからないのでよろしければ教えてください。 bのアドレスは、0x1234としておきます。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (3)
- php504
- ベストアンサー率42% (926/2160)
- cats1234
- ベストアンサー率28% (103/356)
- ekuko_ecch
- ベストアンサー率17% (16/91)
関連するQ&A
- printf文で"という文字を出力したい
#include <stdio.h> #include <stdlib.h> #include <string.h> main() { printf("a"b"c\n"); } 標準出力でa"b"cと出力したいのですが、エラーが出てしまいます。 printf文で"を出力することは可能なのでしょうか。 教えてください、お願いします。
- ベストアンサー
- C・C++・C#
- 不定値の出力について
#include <stdio.h> int main(void) { /* */ int x=1, a; /* */ double y=0, b; /* */ printf("a = %d\n", a); /* */ printf("b = %f\n", b); /* */ printf("x/y = %f\n", x/y); /* */ printf("y/y = %f\n", y/y); /* */ return(0); } -------------------------------------------------- このようなプログラムを実行すると、どのような出力結果が期待できるのでしょうか。 int 型と double 型しか用いていませんが、型によって説明が異なるのであれば他の型についても回答お願い致します。 コンパイラや環境によって出力結果が異なるのでしょうか。 具体的な出力結果でなく、どのように処理されるためにどのような出力が期待されるという形でも説明を頂けますでしょうか。 Visual C++ で実行した結果は次のようになりました。 -------------------------------------------------- a = -858993460 b = -92559631349317831000000000000000000000000000000000000000000000.000000 x/y = 1.#INF00 y/y = -1.#IND00 -------------------------------------------------- ご教示いただければ幸いです。
- ベストアンサー
- C・C++・C#
- printfだと出力されるのにfprintfだと出力されないのはなぜですか?
今プログラムを作りかけなのですが、 forで何回もまわして計算しているので printfでそのまま出力すると見づらくなってきたので テキストに出力したくてちょっといじってみたんですが、テキストは作成されるんですが肝心の数字が出力されていません。 ソースのいじったところは pritf("s[%d]=%f\n",a,b); となっていたところを メイン分の最初で FILE *fp; を宣言して fp=fopen("test.txt","w"); 省略 fpritf(fp,"s[%d]=%f\n",a,b); と直しただけなのですが test.txtに何も書き込まれません。 ソースを省略しすぎかもしれませんが よろしくおねがいします。
- ベストアンサー
- C・C++・C#
- ビット幅とその出力について
C言語を習い始めた者ですが、ビット幅とその出力についてわからないことが二つでてきました。以下のソースコードを見てください。 #include <stdio.h> int main(void) { char ss[] = "ABCDEF"; void *vpt; int idt; vpt = ss; idt = * (char *)vpt; printf("char:%x\n", idt); idt = *(int *)vpt; printf("char:%x\n", idt); return 0; } 出力結果は char:41 char:44434241 となります。 一つ目のわからないことは char:41 についてです。私はchar型のビット幅は8ビットで文字ABの16進数を出力すると予想していました。ところが結果は 文字A の16進数の41のみが出力されました。Aの二進数は 1010、 Bの二進数は1011で それぞれ4ビットずつ持っていて合わせて8ビットになるのでそう考えていました。よくわかりませんが結果から、文字一文字に対して8ビットつまり1バイトに相当するのでしょうか? 二つ目は char:44434241 についてです。一つ目の質問に書いた推測が正しければ1文字を1バイトと考えて16進数にすると Aは41 Bは42 Cは43 Dは44 になります。しかしポインタの先頭のアドレスはAになっているはずなのになぜか出力は char:41424344 ではなくchar:44434241になっています。順序が逆になっているのでしょうか? Cをはじめたばかりなので基本的なところがわかっていないかもしれませんが、説明に不足があればつけたしますのでどうかよろしくお願いします。
- ベストアンサー
- C・C++・C#
- 論理演算について
Cを勉強中の者です。論理演算についてよくわからいことがあります。 以下のソースコードを実行し結果が真なら0001、偽なら0000が出力されるプログラムを作りました。 #include <stdio.h> int main(void) { unsigned short a = 0x1234; unsigned short b = 0xfafc; unsigned short c = 0xcdef; unsigned short x, y; x = a && b; y = b && c; printf("x=%04x\n", x); printf("y=%04x\n", y); return 0; } 結果はx=0001, y=0001となります。y=0001はbとcの文字列がそれぞれfとcをを持っているので演算による結果は納得できますが、x=0001はaとbの文字列には共通するものがないのになぜx=0000ではないのでしょうか? また0xが頭に付く表現は16進数だと強調するためにあるのですか? 説明に不足があればまた足しますのでよろしくお願いします。
- ベストアンサー
- C・C++・C#
- printf による16進表示について
C言語初心者です。 今作っているプログラムで、データを16進形式で表示しようとしています。 大体このような感じです。 /*入力時*/ char buf[5]={0x4e,0x94,0xa0,0x2b,0x78} /*出力時*/ for (i = 0; i < 5; i++) { printf("0x%02x\n",buf[i]) } 実際には入力後にある処理によってbufは更新されるのですが、printfの出力結果として、 0xffffff4e 0x94 0xffffffa0 0x2b 0x78 というように、'ffffff'が付加したものがいくつか出力されてしまいます。 これはどういった意味を持つのでしょうか? なんか初心者ならではの漠然とした質問ですいません。。。
- ベストアンサー
- C・C++・C#
- C言語でprintf
x='a'のように文字がchar型で代入されているとします。 その時に、 printf ("%d",x); と実行させた場合に出力される数字は何なのでしょうか
- ベストアンサー
- C・C++・C#
- 二次関数の係数と切片 オーバーフローになってしまいます
二次関数の通る、二つの座標(x1,y1)、(x2,y2)から y=ax+bの、aとbを求めるプログラムを目指して作ったのですが、 実行すると値がNANになってしまいます。 アドバイスしていただけないでしょうか? ソースです ↓ #include<stdio.h> double main(){ double x1,x2,y1,y2,a,b,a1,a2; printf("x1="); scanf("%f",&x1); printf("y1="); scanf("%f",&y1); printf("x2="); scanf("%f",&x2); printf("y2="); scanf("%f",&y2); printf("***RESULT***\n"); printf("y=%f x+ %f",a,b); a1=y1-y2; a2=x1-x2; a=a1/a2; b=y1-a*x1; return 0; }
- 締切済み
- その他(学問・教育)
- printfの出力内の文字をdefineしたい
defineで定義した内容をprintfしたいのですが、どうすればいいですか? 次のようなコードを書きましたがコンパイルが通りませんでした。 #define ALP2 B int main(){ printf("A"ALP2"C"); return 0; } 上記のコードで「ABC」という出力を得たいです。 できれば変数に代入してから出力というのは避けたいので、それ以外の方法がありましたら教えてください。
- ベストアンサー
- C・C++・C#
- Perlで実行は確認できましたただし・・・
printfの書式指定 書式を指定してデータを出力できる。 printf("1"); 文字列をそのまま表示 printf("%d",1); リテラルを書式指定して表示 $a=1; printf("%d",$a); 変数を書式指定して表示 %dは整数を表示する書式指定です。 %d自身は表示されません。 書式 %d: 整数(少数点の付いていない数)を10進数で表示→ 2,3,-3 %x: 整数を16進数で表示→ 1,a %X: 整数を16進数で表示→ 1,A %f: 実数(少数点の付いている数)を表示→ 1.00000,0.1111 %c: 整数をASCIIコード表に対応する文字で表示→ a,A %S: 文字列を表示→ A,ABC,あ 桁数 printf("%4d",25); 空白を含めて4文字で表示 _ _ 2 5 printf("%04d",25); 0を使って4文字で表示 0 0 2 5 printf("%.3f",3.14); 少数点以下を3文字で表示 3 . 1 4 0 $a=10; 変数$aに10を代入。 $b=3.14; 変数bに3.14を代入。 printf("%10d\n",$a); 10を表示。 printf("X%8.5f\n",$b); X 3.14000を実数として表示。 printf("-" x 10 . "\n"); - を10回表示させる。 printf("%10f\n",$a*$b); $aと$bをかけたものを実数として表示する。 とありますが printf("%10d\n",$a); の %10 の意味が良く分かりません。 printf("X%8.5f\n",$b); の %8.5 の意味が良く分かりません。 printf("%10f\n",$a*$b); の %10 の意味が良く分かりません。 printf("X%8.5f\n",$b); の実行結果は左に一桁ずれていますなぜですか。 ご教示お願い致します。
- ベストアンサー
- Perl
- LBT-TWS11が左右別々に表示されてしまう問題が発生しています。
- 本日朝まで問題なく接続できていたLBT-TWS11が片耳しか音が聞こえなくなりました。
- ペアリング完了の音声は両耳から聞こえますが、接続可能なBluetoothが左右別々に表示されます。