初めまして、最近C言語の勉強を始めました。hirobohと言います。
プログラム言語は今まで触ったこともありません。よろしくお願いします。
C言語の参考書を買ったのですが、演習問題の解答が載っておらず
よろしければ答えを見て頂きたいと思い、投稿しました。
コンパイラは GNU C(OSはLinux)と記載されていました。
次のプログラムは10+20の結果を画面に表示するプログラムです。
#include <stdio.h>
int main()
{
int a[3]
a[0] = 10
a[1] = 20
a[2] = a[0] +a[1];
printf("%d,¥n",a[2]);
return 0;
}
よろしくお願いします。
配列の演習問題について
Re:配列の演習問題について
変わった書き方ですが、間違ってはいないと思います。
一点気になるのは、
> printf("%d,¥n",a[2]);
¥ではなく、\です。
Linuxの場合、EUCを使う場合でもUTF-8を使う場合でも、円記号ではなく逆斜線として表示されるはずです。
一点気になるのは、
> printf("%d,¥n",a[2]);
¥ではなく、\です。
Linuxの場合、EUCを使う場合でもUTF-8を使う場合でも、円記号ではなく逆斜線として表示されるはずです。
Re:配列の演習問題について
> > int main()
>
> ここは、
>
> int main(void)
>
> と書きましょう。
>
これは何故でしょう?
どちらでも同じ意味ではないでしょうか。
>
> ここは、
>
> int main(void)
>
> と書きましょう。
>
これは何故でしょう?
どちらでも同じ意味ではないでしょうか。
Re:配列の演習問題について
> どちらでも同じ意味ではないでしょうか。
違います。
int main()
{
main(0, 0);
return 0;
}
はコンパイルできますが、
int main(void)
{
main(0, 0);
return 0;
}
はコンパイルできません。
つまり、意味が異なるということです。
違います。
int main()
{
main(0, 0);
return 0;
}
はコンパイルできますが、
int main(void)
{
main(0, 0);
return 0;
}
はコンパイルできません。
つまり、意味が異なるということです。
Re:配列の演習問題について
> 違います。
>
> int main()
> {
> main(0, 0);
> return 0;
> }
>
> はコンパイルできますが、
確かにGCCでは、コンパイルできますね。
しかし、そんな保証はないです。
関数定義(プロトタイプ宣言でない)で仮引数並びが空の場合、その関数は、仮引数をもたないことを意味します。
そして、仮引数の数と実引数の数が異なる関数呼出しをした場合の動作は、未定義です。
>
> int main()
> {
> main(0, 0);
> return 0;
> }
>
> はコンパイルできますが、
確かにGCCでは、コンパイルできますね。
しかし、そんな保証はないです。
関数定義(プロトタイプ宣言でない)で仮引数並びが空の場合、その関数は、仮引数をもたないことを意味します。
そして、仮引数の数と実引数の数が異なる関数呼出しをした場合の動作は、未定義です。
Re:配列の演習問題について
気になって調べてみたらCでは(C++ではなく)引数を省略したら可変引数になるような記事がありました
func( )はfunc(...)とみなされるという意味です
渡された引数にアクセスする手段はなさそうですが
C++ではfunc( )とfunc(void)は同じ意味になります
func( )はfunc(...)とみなされるという意味です
渡された引数にアクセスする手段はなさそうですが
C++ではfunc( )とfunc(void)は同じ意味になります
Re:配列の演習問題について
> しかし、そんな保証はないです。
保証はされます。
> 関数定義(プロトタイプ宣言でない)で仮引数並びが空の場合、その関数は、仮引数をもたないことを意味します。
仮引数はありませんが、それはvoidを指定した場合と等価ではありません。
保証はされます。
> 関数定義(プロトタイプ宣言でない)で仮引数並びが空の場合、その関数は、仮引数をもたないことを意味します。
仮引数はありませんが、それはvoidを指定した場合と等価ではありません。