【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.20381

教えてください
投稿者---HELP(2005/03/14 21:37:21)


はじめまして。課題レポートがあるのですが、C言語初心者の自分には辛いので誰か助けてください。
間違いが2行あります。↓

#include<stdio.h>
void main(void);
void main(void)
{
int n1;
short nt;
nt = 1;
for(n1=0;n1<6;n1++)
nt*=10;
printf("10の6乗は%d",nt);
}

宜しく御願いします。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:教えてください 20383 Blue 2005/03/14 21:52:47
<子記事> Re:教えてください 20384 もぐりん 2005/03/14 21:55:33
<子記事> Re:教えてください 20386 RiSK 2005/03/14 22:16:58


No.20383

Re:教えてください
投稿者---Blue(2005/03/14 21:52:47)


【掲示板ご利用上の注意】をチャント読んでください。
※学校の課題の丸投げ禁止!ですよ。

まぁ、ヒントだけ short型の最大値はいくつなんでしょうか?



この投稿にコメントする

削除パスワード

No.20384

Re:教えてください
投稿者---もぐりん(2005/03/14 21:55:33)


初心者だからという免罪符はありません。
【掲示板ご利用上の注意】
 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は慎んで!
は読みましたか?


この投稿にコメントする

削除パスワード

No.20386

Re:教えてください
投稿者---RiSK(2005/03/14 22:16:58)


>はじめまして。課題レポートがあるのですが、C言語初心者の自分には辛いので誰か助けてください。
>間違いが2行あります。↓

上の2行が間違いです。
# ってのは冗談ですが,マナーは守るべし

> void main(void);
不要

> void main(void)
わざわざ処理系依存にする必要はない
int main(void) にして,最後に return 0;

>     printf("10の6乗は%d",nt);
short 型の時は h が必要。
    printf("10の6乗は%hd",nt);

なお short 型の最大値は 32767 以上。
1000000 はオーバーフローする可能性がある
確実にオーバーフローしないようにするには
最大値で 2147483647 以上扱える long 型(かそれより精度の高い型)を
使う必要がある

#include <stdio.h>
int main(void)
{
    int n1;
    long l = 1;
    for (n1 = 0; n1 < 6; ++n1)
        l *= 10;
    printf("10の6乗は%ld\n", l);
    return 0;
}



この投稿にコメントする

削除パスワード

No.20388

Re:教えてください
投稿者---HELP(2005/03/14 22:56:01)


ありがとうございます。
今後は気をつけます。

><pre>>はじめまして。課題レポートがあるのですが、C言語初心者の自分には辛いので誰か助けてください。
>間違いが2行あります。↓

上の2行が間違いです。
# ってのは冗談ですが,マナーは守るべし

> void main(void);
不要

> void main(void)
わざわざ処理系依存にする必要はない
int main(void) にして,最後に return 0;

> printf(<font color="#0000ff">"10の6乗は%d"</font>,nt);
short 型の時は h が必要。
printf(<font color="#0000ff">"10の6乗は%hd"</font>,nt);

なお short 型の最大値は 32767 以上。
1000000 はオーバーフローする可能性がある
確実にオーバーフローしないようにするには
最大値で 2147483647 以上扱える long 型(かそれより精度の高い型)を
使う必要がある

#include <stdio.h>
int main(void)
{
int n1;
long l = 1;
for (n1 = 0; n1 < 6; ++n1)
l *= 10;
printf(<font color="#0000ff">"10の6乗は%ld\n"</font>, l);
return 0;
}</pre>



この投稿にコメントする

削除パスワード

No.20390

Re:教えてください
投稿者---たいちう(2005/03/15 10:11:27)


> 確実にオーバーフローしないようにするには
> 最大値で 2147483647 以上扱える long 型(かそれより精度の高い型)を
> 使う必要がある

long 型が4バイトある保証はないのでは?
4バイト未満のコンパイラを知っているわけではないのですが、

1 = sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)

だったような(規格を見つけられませんでした。フォロー求む)。


この投稿にコメントする

削除パスワード

No.20391

Re:教えてください
投稿者---aaaaaaaaaaa(2005/03/15 14:16:06)


>long 型が4バイトある保証はないのでは?
>4バイト未満のコンパイラを知っているわけではないのですが、

H8.


>1 = sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)

1 = sizeof(char) <= sizeof(short) <= sizeof(long)

sizeof(int) は実装定義.




この投稿にコメントする

削除パスワード

No.20392

Re:教えてください
投稿者---たいちう(2005/03/15 16:08:06)


> H8.

情報有難うございます。組み込み系などで使うのかな。
H8


規格について調べてみましたが、C99では、型のサイズは環境依存とはいえ、
型ごとの最低サイズが定義されていましたので、RiSK さんの書いたとおり
long で十分確実でした。
けちを付けて(けちを付けたわけじゃないけど)御免なさい。

整数型が表現できる値の範囲


この投稿にコメントする

削除パスワード

No.20393

Re:教えてください
投稿者---RiSK(2005/03/15 16:28:56)


>>long 型が4バイトある保証はないのでは?

無いです。

>>1 = sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)
>
>1 = sizeof(char) <= sizeof(short) <= sizeof(long)
>
>sizeof(int) は実装定義.

sizeof(char) は 1 ですが,それ以外はすべて処理系依存。
1 バイトが何ビットであるかで変わってしまうでしょう。
CHAR_BIT は最低 8 ですが,もし 32 であるならば,
sizeof(long) も 1 になる可能性があります。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧