- ベストアンサー
戻り値
今C言語の勉強を始めたのですが、戻り値の概念がどうしても わかりません。返すなどの語句とごっちゃになってしまいます。 int read (int fhandle, void *buffer, unsigned int count); ちなみに上のread関数の場合の戻り値は何になるのでしょうか? 関数を調べても、上の表の見方が全く分からず困っています。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (3)
- jacta
- ベストアンサー率26% (845/3158)
- stamkm
- ベストアンサー率25% (71/280)
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
関連するQ&A
- 戻り値について
ただ今、c言語の勉強をしている者です。 本を読んでいて分からないところがあったので ご指導して頂ければと書き込みました。 それは、最初と最後のところです。 int main(void) { ・ ・ 処理 ・ ・ return 0; >int main(void) このintというのは 戻り値が整数だと言うことだと思うのですが 戻り値が文字の場合ということも あるということですか? 例えば、 char main(void) ということもあるのでしょうか? また、voidというのは 他の名前にしたらいけないのでしょうか? > return 0; というのは、 正常に終わったら戻り値を0にしろということですか? ご指導して頂ければと思います
- ベストアンサー
- C・C++・C#
- C キャスト方法を教えてください
C言語の初心者なのですが、 int abc(int(*read)(void*, int, int), int size, char* data); ような関数で第1引数の値をキャストするときどうすればよいですか。 int read = (????)NULL; そもそもint(*read)(void*, int, int)ってどういう意味ですか?
- ベストアンサー
- C・C++・C#
- main関数の戻り値について
c言語において、main関数の戻り値は何を意味しているのですか。 また、void型にすれば、main関数の戻り値を書かなくても問題無いでしょうか。 また、関数はreturn文を書かなくても、最後まで処理を実行すると終了するらしいですが、void型にすれば、main関数でreturn文を書かなくても問題無いでしょうか。
- 締切済み
- C・C++・C#
- 戻り値を返す関数の前に(void)を付ける
今日会社で 変数 = (void)戻り値のある関数 #具体的な例としては下記一例を参照 と、ソースで書かれているものがあったのですが、 コメント等では、 「戻り値を明示しないときに(void)を付けて使用する」 と、書いてあります。 戻り値のある関数の前で(void)を付けると、戻り値が明示されなくなるのでしょうか?? または、このような動作にはならないのでしょうか。 自分自身、ソースの内容をうる覚えになっておりますので、 確認をしながらアップしていきたいと思いますので、 宜しくお願い致します。 /*一例*/ ・num1とnum2を足した値を返す int PlusPoint(int num1 , num2); ・PlusPointの値を格納する int Sum ◇ソース◆ #include <stdio.h> #include "Plus.h" int main(void) { int Sum; Sum = (void)PlusPoint; if(Sum == 2) { printf("false"); exit(0); } printf("true"); return 0; } *PlusPoint関数は外部で定義されている *プロトタイプ宣言はPlus.hに定義されいるものとする
- ベストアンサー
- C・C++・C#
- 関数とビット列
C言語勉強中です。下記本から抜粋したものですが、 関数の流れや、1U、~0Uなどの意味がわかりません。 それぞれ関数の中でどのような処理をしているのでしょうか? scanfで正数入力し、print_bitsにnxを渡し、そこのxを1と&して 2進の0か1を表示させるのはなんとなく解るのですが、PCのCPUの ビット数を確認する為?の動きなどがわかりません。 どうか、解説していただける方、よろしくお願いします。 #include <stdio.h> int count_bits(unsigned x) { int count = 0; while (x) { if (x & 1U) { count++; } x >>= 1; } return (count); } int int_bits(void) { return (count_bits(~0U)); } void print_bits(unsigned x) { int i; for (i = int_bits() - 1; i >= 0; i--) { putchar(((x >> i) & 1U) ? '1' : '0'); } } int main(void) { unsigned nx; printf("非負の整数を入力してください:"); scanf("%u", &nx); print_bits(nx); putchar('\n'); return (0); }
- ベストアンサー
- C・C++・C#
- ビット構成について
今、ビットについて勉強しているのですが、わからないところがありますので、質問しました。わかる方がいれば、わかりやすく教えてください。(例として、整数xは10とした場合をしてもらえる助かります。) int count_bits(unsigned x){ int count = 0; while (x){ if (x & 1U) count++; x >>= 1; } return (count); } int int_bits(void){ return (count_bits(~0U)); } void print_bits(unsigned x){ int i; for ( i = int_bits() - 1 ; i >= 0; i--) putchar(((x >> i) & 1U) ? '1' : '0'); } 以上 まず、 int count_bits(unsigned x){ int count = 0; while (x){ if (x & 1U) count++; x >>= 1; } return (count); } についてですが、整数Xを10とした場合、私の考えではcount=2となると思うのですが・・・。 次に int int_bits(void){ return (count_bits(~0U)); } についてなのですが、count_bits関数で整数Xを10とした場合count=2となったあと、int_bits関数では全ビットを1にするということみたいですが、count_bits関数でおこなった作業をどうint_bits関数で処理するのかわかりません。 最後が for文の中の、(i = int_bits() - 1 ; i >= 0; i--) についてですが、整数10のときの i = int_bits() はどうなっているのでしょうか?? わかりにくい質問ですみません。 回答宜しくお願いします。
- ベストアンサー
- C・C++・C#
- 戻り値について
プログラミング初心者です。 よろしくお願いします。 C++を使っています。 早速なのですが、以下にプログラムを記載します。 ◎1---------------------------------------- #include<stdio.h> main() { char ss[256]; gets(ss); puts(ss); } ---------------------------------------- ◎1を実行すると、「型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません」と表示されます。 参考書には、「戻り値のvoidがないと勝手に戻り値の関数をint型と解釈する。関数の宣言と定義が合わないとコンパイル時にエラーとなる」とあったのですが、 ◎2------------------------------------- #include<stdio.h> int main() { char ss[256]; gets(ss); puts(ss); } ------------------------------------- 以上の◎2だと、なぜ実行出来るかよくわかりません。 本当に初心者的な質問ですいませんが、教えていただけると嬉しいです。
- ベストアンサー
- C・C++・C#
- VB 関数
初めまして。 VB初心者なので,簡単な質問なのかしれませんが御願いします。 C言語で, int main (void) 戻り値の型 関数名 戻り値なし と書きますが,これと同じ意味を持つプログラムをVBで書くとどのようになりますか? 関数の作り方がまだわかってないので教えていただけますか? 宜しく御願いします。
- ベストアンサー
- Visual Basic
- 引き数がポインタでない関数の戻り値はなぜint型なのか?
最近、疑問に思っていることがあって質問したいんですが、一般的にc言語 で使われる関数っていうのは、引き数としてポインタをとる関数以外は全て 戻り値はint型なのですがこれはなぜでしょう。私自身の結論としては、も し関数の戻り値がchar型だとしたらchar型で表せる範囲の値は全てasciiコー ドとして使われているので、もしエラーがあって戻り値としてEOF(-1)を返す 際に1byteでは同じビット配列になる255が既に使われていてEOFとして-1を定 義できないために、-1と255が同じビット配列ではない1byte以上のデータ型 つまりint型(たぶん、int型がコンピュータが一番効率良く処理できるデータ型なのでたぶんint型を使ったと思いますが)を使ったのではないかと言う 結論に達したのですがこれは正しいのでしょうか。どなたか御教授お願い致 します。
- ベストアンサー
- C・C++・C#
- 構造体ポインタ、及び、戻り値のあるマクロ関数の作成方法について
●開発環境 [OS] Linux 2.6.9 [コンパイラ] GCC 3.4.6 ●質問 以下のプログラム中のTEST関数を、 マクロ関数(#define)にしたいのですが、 やり方がわかりません。 ご存知の方がいらっしゃいましたら、ご教授願います。 -------------------------------- #include <stdio.h> typedef struct t_str_abc { unsigned int x; unsigned int y; } str_abc; unsigned int TEST( str_abc *kou ); void main(void) { str_abc kouzou; unsigned int ret; kouzou.x = 1; kouzou.y = 2; ret = TEST(&kouzou); printf("ret = %d\n", ret); } unsigned int TEST( str_abc *kou ) { unsigned int state; state = kou->x + kou->y; return state; } --------------------------------
- ベストアンサー
- Linux系OS
お礼
レス遅れて申し訳ありませんでした。read関数についての具体的な解答 ありがとうございました。よく理解出来ました。実は仕事でプログラム言語を 使わなければならなくなり、まだまだ初心者ですが、頑張っていこうと思っています。 今、現在のプログラムは低水準の方を使用しているので、より理解力を深めることが出来るようにしていきたいと思います。本当にありがとうございました。