• ベストアンサー

結果がおかしい

liar_adanの回答

  • ベストアンサー
  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.7

>すみませんが、後学のためにあきらかにまちがいの根拠を教えて下さい。 >ANSI-Cでそこまで定義してあるものなのでしょうか? はい。ANSI-Cの日本における翻訳規格である JIS X 3010の付属書Gにおいて、 「fprintf又はfscanf関数の書式が実引数並びと一致しない場合」 は「未定義」であるとされています。 未定義というのは、要するにプログラムとしてまちがいということです。 だから、コンパイラによってたまたま四捨五入になることがあってもかまいませんが、 C言語の参考書において「四捨五入になる」という記述はまちがいです。

関連するQ&A

  • コンパイル結果が違う

    コンパイル結果が違う C言語を勉強中の初心者です。 以下のプログラムをVC++6.0のCL.exeでコンパイルするとうまくいくのですが、VC++2010のCL.exeでコンパイルして実行すると、t2の値が0になってしまいます。 また、VC++2010でコンパイルした方が実行結果も遅いです。 #include <stdio.h> #include <time.h> int main(void) { int i = 1; time_t t1, t2; time(&t1); while(i <= 30000) printf("%d,", i++); time(&t2); printf("\ntime1=%ld time2=%ld\n", t1, t2); printf("かかった時間は、%d秒です\n", t2-t1); return 0; } vc++2010でコンパイルした方のt2の値が、0で表示されてしまうのはなぜでしょうか? よろしく、お願いします。

  • Visual C++ 2008 Express Edition

    Visual C++ 2008 Express Editionをダウンロードしたのですが、使い方が全く分かりません。C言語を学習しています。 例えば #include <stdio.h> int main(void) { printf("Hello, World!\n"); return 0; } というようなプログラミングを実行するにはどうすればいいでしょうか

  • C言語で乱数がうまく効きません。下記のソースでコンパイルして実行すると

    C言語で乱数がうまく効きません。下記のソースでコンパイルして実行すると結果が130固定となってしまいます。 #include <stdio.h> #include <stdlib.h> int main(void){ int x; x = rand(); printf("%d",x); return 0; } 使っているコンパイラはBorland C++ 5.5.1です。何か間違いでもあるのでしょうか?よろしくお願いします。

  • 実行結果の順番がおかしいんです・・・・・(。。;)

    現在C言語の勉強をしている初心者です。突然ですが 例えば、このようにプログラムしたら・・・ #include <stdio.h> int main(void) { int n; printf("何か数字を入力してください:"); scanf("%d",&n); printf("\n入力した数字は%dです。\n",n); return 0; } <<実行結果>>  何か数字を入力してください:2 [Enter]  入力した数字は2です。 って普通は出力されますよね??しかし、私の使っているBorland C++ Compiler 5.5 では <<実行結果>>  2 [Enter]  何か数字を入力してください:  入力した数字は2です。 っていう風に、まず、なにか入力しないとprintfの内容を出力してくれないんです。(汗)これって実行結果の順番がおかしいですよね・・・(。。;) どうかこの状態を直せるアドバイスをください。 よろしくお願い致します。m(__)m

  • C言語でscanf()が先に実行されるのはなぜですか?

    C言語でscanf()が先に実行されるのはなぜですか? #include <stdio.h> int main(void){ int intNum; printf("整数を入力してください:\n"); scanf("%d", &intNum); printf("入力値は:%d\n",intNum); return(0); }

  • コンパイルすると‥‥

    C言語です。 emacsでC言語のプログラムを作りました。 #include<stdio.h> int main() { float x; printf("データを入力してください\n"); scanf("%f",&x); printf("%fを受け取りました\n",x); return 0; } といった簡単なプログラムです。 これをコンパイルすると 画像のようなものが表示されて どうしたら良いのか困ってます。 僕が思うにもはやプログラムに問題があるのではなく パソコンの設定に問題があるのかな? と思っているのですがどうしたら良いのかがわかりません。。。 分かる方、よろしくお願いします。

  • 配列要素内の数値

    #include <stdio.h> int main(void) { int arr[1]={123456789}; int *x[1]; *x = arr; printf("%d ",*(x[0])); /* 123456789 と表示*/ return 0;} 実行すると123456789と表示されるまでは分かるのですが、*(x[0])の部分を別の書き方にして、arr[0]に入ってある「123456789」という数値の千の値である6という数値のみを取り出して、表示することは可能なのでしょうか?(6000と取り出したいのではなく、6として取り出したい) 次のように数値を文字列の一つ一つを扱うかのように、扱いたいのです。*(x[0])の部分の変更だけで6を取り出せるような方法はありますか? #include <stdio.h> int main(void) { char *arr[]={"pen"}; printf("%c\n",*(arr[0]+0)); printf("%c\n",*(arr[0]+1)); printf("%c\n",*(arr[0]+2)); return 0;}

  • int とcharの使い方と違い

    教えてgooに投稿するのは初めてですがよろしくお願いします。 最近C言語を勉強し始めた初心者です。 ネットのサイトを見て独学でしています。 過去スレッドをさらっと見て聞きたいことが書いてなかったので投稿します。(同じスレッドがあったらすみませんOTL) #include<stdio.h> int main(void) { int str='a'; printf("str=%c\n",str); return0; } この上のプログラムでは str=a と出て、エラーが出ずにコンパイル出来ました。でも、 #include<stdio.h> int main(void) { int str[]="abc"; printf("str=%s\n",str); return0; } とするとエラーが出ます。 int とcharの使い方と違いについて詳しく教えてほしいです>< お願いします。

  • 学校の授業でC言語をやっているので「猫でも分かるC言語プログラミング」

    学校の授業でC言語をやっているので「猫でも分かるC言語プログラミング」を買ったのですが、 下記のソースを実行しようとしても「'a' :仮パラメーター リスト内にありません」とエラーが出てしまいます。 プログラミングに関してはど素人なので何をどうすればいいのかまったく分かりません。もしよければ誰か助けてください! ちなみにMicrosoft visual C++ 2010を使っています #include <stdio.h> int main() {     int a, b, c; a = 10; b = 15; c = a + b; printf("%dたす%dは%dです\n", a, b, c); return 0; }

  • いきなり。

    C言語をやってます。中学3年です。始めたばっかの初心者なんですが、ビルドエラーが出たのでどこが悪いのか教えていただきたいです。 #include <stdio.h> int main() { printf("今日はよい天気ですね。\n明日もよい天気でしょう\n"); return 0; } これなんですが、ビルドエラーが2つ出ました。 Visual C++を使ってます。 よろしくお願いします。