3 :
デフォルトの名無しさん :2013/11/17(日) 13:52:46.42
コンパイラ:bcc32 エラー E2303 ファイル名.c 287: 型名が必要 typedef struct byteArray { char* buf; int length; int type; }ByteArray; extern int recvByLen(const SOCKET soc, ByteArray* array); int recvByLen(const SOCKET soc,ByteArray array){ 処理 } この様に定義して作った構造体と関数を使いたいのですが、いざコンパイルをかけるとコンパイルエラーとして上記のエラーがはき出されます。 おそらく第2引数のことを指しているとは思いましたが、呼び出し側も関数側の方もスペルは合ってます。 このエラーが出る考えられる原因を教えてください。
#include <sys/socket.h>
>>4 externと実際の関数で引数の型が違ってる。
エラーは違う原因だと思うけど。
#include <winsock2.h> だった
>>5 SOCKET型の事でしたら、ソース内で「winsock2.h」を読み込んでます。
内容が書き足らず申し訳ありません。
>>6 ありがとうございます、修正しておきます。
やはりエラーは型名が必要のままですね・・・
9 :
4 :2013/11/17(日) 14:28:16.99
名前入れ忘れた、すみません。
10 :
コケマン :2013/11/17(日) 14:29:54.36
いやー2chもC言語も初心者だけど一つのスレが終わるってのは清々しいね!
11 :
4 :2013/11/17(日) 14:48:34.46
追記として 関数を呼び出すソースと関数が定義されているファイルは別々にして分割コンパイルをしています。 main_source.c net.c net.h と3つのファイルで構成しています。 内容は要約しても改行が多すぎと怒られるので分けてレスします。 net.h内 typedef struct byteArray { char* buf; int length; int type; }ByteArray; extern int recvByLen(const SOCKET soc, ByteArray* array);
12 :
4 :2013/11/17(日) 14:49:04.31
net.c内 #ifndef _WINSOCK2API_ #include <winsock2.h> #endif #include"net.h" int recvByLen(const SOCKET soc,ByteArray* array){ 処理 } main_source.c内 #ifndef _WINSOCK2API_ #include<winsock2.h> #endif #include"net.h" int main(int argc,char **argv){ ByteArray array; 関数呼び出しまでの処理 recvByLen(connectSoc,&array); } となっています。
独自の名前と思っているものが、別の場所でマクロ定義されている、とか
14 :
デフォルトの名無しさん :2013/11/17(日) 14:51:59.31
arrayがぁゃιぃ
15 :
4 :2013/11/17(日) 14:55:45.23
>>13 レスありがとうございます。
今ByteArrayを変更してB_Arrayや、Barrayなどに変更しましたが、同じエラーが出たのでおそらく違うようですね…
うーんホントにコレなんなんだろう?
>>11 extern int recvByLen(const SOCKET soc, ByteArray* array); のexternいらん
コンパイルとは関係ないが
17 :
4 :2013/11/17(日) 15:02:12.84
>>16 マジでですか?
複数ファイルを使用し、関数の定義は宣言とは違うファイルで書いていたので必要かと思ってつけました
287行目はどれよ? あと、その行に複数候補があるなら、複数の行にぶったぎれ。
#include"net.h" ↓ #include "net.h"
20 :
4 :2013/11/17(日) 15:16:07.14
>>18 行数名書いてませんでした、申し訳ありません
287行目は関数の定義のこの部分です
287 int recvByLen(const SOCKET soc,ByteArray* array){
288 int recvSize ,
recvIdx,
recvLen,
recvFlag;
・
・
・
21 :
4 :2013/11/17(日) 15:22:54.62
本当に申し訳ありません、怒らないで聞いてください。
解決しました。
原因は net.c ファイルで net.h をインクルードしていないことでした。
>>19 さんの指摘で念のためスペース入れてみようと思い、確認したところ
そこでヘッダーファイルを読み込んでないことに気づき、インクルードした結果コンパイル通りました。
本当にありがとうございます。
>>20 SOCKETが定義されてないんじゃねえの
23 :
デフォルトの名無しさん :2013/11/17(日) 15:23:35.91
エラーメッセージが不親切な古いコンパイラ使うのやめたら?
よかつたね
25 :
4 :2013/11/17(日) 15:31:34.52
>>23 フリーで紹介されてた中で評価の高かったのがこれでしたので使っていましたが、確かにこのエラーメッセージは不親切すぎました。
今後の為にも他のコンパイラ探してみます。ありがとうございました。
>>24 ありがとうございます。
コンパイラのせいにしやがった
VS2008EEがおすすめ
実際に不親切なんだから仕方がない
型名が必要なのに型名以外のトークンが出現したのでその通りのメッセージじゃないか どういうメッセージなら満足するんだよ
しかたないでしょ? この世界は残酷なんだから
malloc関数で確保したメモリブロックの領域を確認したいんだけど そういった関数ない? 例 int tempSize = 1000; char *temp; temp = (char*)malloc(tempSize); 見たいな感じで temp が確保したメモリのバイト数を確認したいのです。
>>32 標準には無い
環境依存なら時々あるけどお薦めしない
まじかー・・・ちゃんと確保出来てるか確認したかったけど PCを信じるしかないか thx
tempが0でなければ、ちゃんと確保できてる。 PCを信じるというか、おまえの使ってるライブラリを信じるかぎり。
いやいや信じろよ 指定したサイズのメモリを確保するという仕様を信じられないなら、 サイズを取得できる関数も信じられなくね?
初心者のコンパイラやライブラリに対する不信感は異常
どうせtempのチェックもせずに、確保できたかどうか心配〜とか言ってるんでしょ
自分のプログラムミスをコンパイラやライブラリのせいにする 経験上、コンパイラかlibcが原因だったことは10万回に一回くらいだな 世界中で何十万人が使ってるものを、お前如きゴミクズが疑うのは1万年早い
戻り値のtempなら確認できるが、freeされちゃ分からんだろう 開発に関わったわけでもないのに偉そうなゴミクズは死ねよ
お前が作り込んだバグだっていうのは、ゴミクズ以外はみんなわかってるから
コンパイラのせいにしてるようじゃこの先やってけないよ
そんなに既存のコンパイラを疑うならコンパイラから自分で作れば?って話
なんでお前らそんなにキレてんの
珍しい動物を棒で突ついて遊んでる このクラスの逸材はめったに出現しないからね
だからコンパイラ作ったわけでもないのに、何でこんな偉そうなの? 朝鮮人なの>
キレテナーイ
>>36 それが出来ていない実装があるから確認したいんじゃんないの?
linuxとか
>>45 コンパイラなんて作れるんですか?
仮にCで書いたとしても、どうやって実行ファイルにするですか?
>>50 だからどうやって確認するのかと…
仮に確認する機能があったとして、なんでそちらは信じられるのか…と…
Javaバイナリにしてどうするんだ せめてLLVMだろ
55 :
デフォルトの名無しさん :2013/11/17(日) 18:46:38.16
>>51 作れるから存在してるんだろうが
何なの?
ダイヤモンドみたいにどっかの山掘って採ってくると思ってんの?
>>55 だからどうやってコンパイルするんですか?
コンパイラを作ろうとしてるんですよね?
>>50 overcommit のことでも言いたいのか?
58 :
デフォルトの名無しさん :2013/11/17(日) 19:11:29.59
>>36 ゴミクズに管理領域ボロボロにされても、正しく確保できるアロケーターなんて存在しない
60 :
コケマン :2013/11/17(日) 19:23:35.46
なんでそんなに彼の失敗をせめるの? 誰だって最初はゴミクズなんじゃないの? 僕も君たちも小学校の時はみんな最初は先生に色々教えられて成長したはずジャン 大事なのは今のゴミクズの状態ではなく社会に通用するプログラマーになってからなんだと思う まとめると彼は今成長してるんだから僕たちはチンコでもこすってアドバイスとかすればいいんじゃないの?
>>60 いやもう元の彼は関係ないから
その話を酒の肴に盛り上がってるだけだから
それが2ch
62 :
コケマン :2013/11/17(日) 19:31:49.51
偉そうな奴の中にgccはワシが作ったって奴いねえのかよ いねえなら偉そうにすんなゴミカス
gccはワシが作った(make的な意味で)
gcc程度なら楽勝でしょ シェルスクリプトでもつくれる
大学の講義でコンパイラつくったな 懐かしい
yaccとlex使っただけなのにコンパイラー作ったとか言うの禁止な
>>67 せんせー!bisonやANTLRはyaccに入りますかー?
yacc(とかbisonとか)を造れよ
yacc lexだけじゃフロントエンドしか作れないだろー
パーサージェネレーターとかわざわざ作ることはないけど、 作ろうと思ったら作れるくらいじゃないと、コンパイラ作ったって言うのは禁止。
作ろうと思っただけで作れたつもりになのはOKでしょうか?
宇宙は俺が創ったんですけど? もちろん俺は韓国人だが
「あったからわざわざ作らなかったけど、作ろうと思えば作れるな」で終了だと思うけど いろいろ言ってるのは動作原理とか理解しないでただyaccとか使ってただけの連中なんだろうな。
,.,.,.,.,.,.,.,.,__ ,,;f::::::::::::::::::::::ヽ i::::::::/'" ̄ ̄ヾi |:::::::| ,,,,,_ ,,,,,,| |r-==( 。);( 。) ( ヽ :::__)..:: } ,____/ヽ ー== ; ほほう それでそれで? r'"ヽ t、 \___ ! / 、、i ヽ__,,/ / ヽノ j , j |ヽ |⌒`'、__ / / /r | {  ̄''ー-、,,_,ヘ^ | ゝ-,,,_____)--、j / \__ / | "'ー‐‐---''
char*で引数を取る外部ライブラリの関数があるのですが、 その関数は「UTF-8の文字しか受け付けない」とドキュメントに書いてあります。 どうやってchar*の型でUTF-8を渡せばよいのでしょうか?
もっと基礎からやったほうがいい
>>78 C言語で文字コード意識するとアホみたいに面倒になるからそういう用途ならC使わない方がいい
Windows なら WideCharToMultiByte と MultiByteToWideChar があるでしょ
>>78 charはエンコードを意識しないから、一文字8bitのエンコードなら何でも入るよ。
UTF-8のテキストファイルからデータを読み込んでchar*に入れたらそのままUTF-8だし
コンソールがUTF-8に設定されていたら、標準入力から読み込む文字列はUTF8になる。
UTF-8でない環境で、そのライブラリのためだけにUTF-8を使いたかったら、
>>81 みたいに
OSやら処理系やら、ライブラリを利用してUTF-8に変換してから渡すことになる。
>>78 UTF-8というのは、Unicodeをchar*で扱えるようにした形式。
7bitASCII範囲の数字とかアルファベットとかしか使っていない文字列は、ASCIIとUTF-8で同一になるよ。
というか、当初ユニコードが2バイトで定義された時に、普通は1byte文字しか使わない英語圏の連中が、
おいおい1文字で無駄に2バイトもとらせるなよ、ということでASCII範囲ならそのまま互換性のある
UTF-8形式を考えた、というとこらしい。
85 :
78 :2013/11/19(火) 00:12:04.21
このコードがLinuxでは文字化けしないのにWindowsでは文字化けします。 文字化けの確認は ./program > output.txt でリダイレクトしたものを確認しています #include <stdio.h> int main (int argc, char **argv) { // utf8 の"あいうえおかきくけこさしすせそたちつてと" const char utf8[] = { 0xE3,0x81,0x82,0xE3,0x81,0x84,0xE3,0x81,0x86,0xE3, 0x81,0x88,0xE3,0x81,0x8A,0xE3,0x81,0x8B,0xE3,0x81, 0x8D,0xE3,0x81,0x8F,0xE3,0x81,0x91,0xE3,0x81,0x93, 0xE3,0x81,0x95,0xE3,0x81,0x97,0xE3,0x81,0x99,0xE3, 0x81,0x9B,0xE3,0x81,0x9D,0xE3,0x81,0x9F,0xE3,0x81, 0xA1,0xE3,0x81,0xA4,0xE3,0x81,0xA6,0xE3,0x81,0xA8, 0x00 }; printf("%s\n", utf8); }
>>85 winのコンソールがshift-jisだよ
87 :
78 :2013/11/19(火) 00:22:07.04
>>86 chcp 65001を実行した後に再びプログラムを実行したら文字化けしなくなりました
ありがとうございました
88 :
デフォルトの名無しさん :2013/11/19(火) 10:51:00.05
/* a5-3-10.c */ #include <stdio.h> int main(void) { int i, array[7], work; for (i = 0; i < 7; i++) { printf("%d番目 > ", i); scanf("%d", &array[i]); } for (i = 0; i < 3; i++) { ● = array[i]; array[●] = array[●]; array[6 - i] = work; } printf("入れ替え後\n"); for (i = 0; i < 7; i++) { printf("array[%d] = %d\n", i, array[i]); }
work = array[i]; array[i] = array[6 - i]; だろ
ボケろよ
91 :
デフォルトの名無しさん :2013/11/19(火) 13:04:39.22
#define NUM_SAMPLE 4 #define NUM_INPUT 2 double tx[NUM_SAMPLE][NUM_INPUT], ty[NUM_SAMPLE][NUM_OUTPUT]; tx[0][0]=0.3; tx[0][1]=0.4; //tx[0][2]=0.3 ty[0][0]=1; tx[1][0]=0.5; tx[1][1]=0.2; //tx[1][2]=0.3; ty[1][0]=0; tx[2][0]=1; tx[2][1]=0.6; //tx[2][2]=0.1; ty[2][0]=1; tx[3][0]=0.5; tx[3][1]=0.1; //tx[3][2]=0.3; ty[3][0]=0; for(i=0;i<10;i++)printf("[%.1f]",tx[0][i]); で[0.3][0.4]だけきれいに表示かコアなんとかされると思ったのですが 表示は[0.3][0.4][0.5][0.2][1.0][0.6][0.5] と表示されます。なぜtx[1][0]tx[1][1]・・・の数字がtx[0][3]・・[4]の ほうにまではいっているのでしょうか。。
tx[i][j] が *(tx+i*NUM_INPUT+j) と同じだから
配列の範囲外へのアクセスは未定義
質問です。 typedef struct{ int id; int *array; }ST_DATA; int no_1[] = { 0, 1, 2 }; ST_DATA list[] = { 1, &no_1[0] }; という定義があったとして、 for( i=0; i<(sizeof(*list[0].array)/sizeof(list[0].array[0])); i++ ){...} この場合、forは3回ループ処理ができるでしょうか? また 「sizeof(*list[0].array)」 の*が無いと、sizeof(int *)と同じ意味になるでしょうか? 宜しくお願いします。
arrayはあくまでポインタだから、 sizeof(*array)もsizeof(array[0])も同じ。 なので1回。 後者はyes。
ST_DATA.array が配列ではなくポインタなので sizeof(ST_DATA.array) / sizeof(ST_DATA.array[0]) で要素数を得ることはできない
>>95 >>96 回答ありがとうございます。
どうしてもlist[]からループ数を判断したい場合は、ST_DATAのメンバに要素数を追加して、
ST_DATA list[] = { 1, &no_1[0], 3 }; とするしかないでしょうか?
そだね。 そこは 3 じゃなくて、sizeof(no_1)/sizeof(no_1[0]) でいけるが。
1. ST_DATAはそのままで、
int no_1[] = { 0, 1, 2, -1 };
みたいに配列の終端を -1 とかに出来るならそれを入れて
配列要素数を適宜数える
2.
>>97 みたいに
typedef struct {
int id;
int *array;
int data_n;
} ST_DATA;
とかで配列要素数をもたせる
状況により使い分ける
スレチかもしれませんが同じメールソフトなのにサイトに導入してる機関 によってログインできないのは何故ですか?
スレチだしイタチだし日本語でおけだし
すんません、多分超初歩的なことかもしれませんが、、環境 win7(home) コンパイラ bcc32 本を見て入力しながらべんきょうしてるんですけど。 #include <stdio.h> #include <stdlib.h> int input_and_sum(int n) { int i,sum,*p; p = (int *)alloca(sizeof(int)*n); for (i = 0; i < n; i++){ printf("Input No.%d:",i); scanf("%d",&p[i]); } sum = 0; for (i = 0; i < n; i++) sum += p[i]; return sum; } int main(void) { int n, sum; printf("Input n="); scanf("%d",&n); sum = input_and_sum(n); printf("sum=%d\n",sum); return 0; } これをコンパイルすると'プロトタイプ宣言のない関数 'alloca'の呼出(関数 input_and_sum)で警告がでます。 allocaってstdlib.hをインクルードするのでは???
>>101 「スレチかも知れませんが、同一のメーラー使っているのに
接続するメールサーバを変えると認証が失敗する場合があります。
何故でしょうか?」
…ということ?
alloca は非標準関数でBCCには無いんじゃないかな?
>>105 Oh! grepで探しても見つからん、はて?と思ってたら。。。orz
なんてこったい
ありがとうございます トホホ
>>107 ありがとうございます!
警告無しにコンパイル出来ました。^^;
いまさらC
110 :
デフォルトの名無しさん :2013/11/21(木) 01:53:33.64
自己参照構造体がイマイチ理解できねぇ・・・ みんな理解してんのかよ・・・・
四角と矢印を使って絵を描いてみればいい
112 :
デフォルトの名無しさん :2013/11/21(木) 02:14:37.62
あれでしょ、 □□■→□□■ □□■→□□■ ↓ ↑ □□■ こんな感じの絵でしょ? 言ってることはわかるけど、コードと説明読んでると混乱する。 混乱してる時点で、言ってることもわかってないと思うけど。
113 :
デフォルトの名無しさん :2013/11/21(木) 02:16:41.39
めっちゃずれてた □□■→□□■ □□■→□□■ ↓ ↑ □□■ どや
最近はじめてよくわからないんですけど、 Voidの中でポインタに入れたものをプログラム全体で使おうとおもったらどしたらいいんでしょうか・・・。
_alloca()
>>114 static void* foo_;
void foo_malloc(void)
{
foo_ = malloc(1);
}
void foo_free(void)
{
free(foo_);
}
「自己参照」 って意味が誤解されることが多いと思う あくまでメタ領域での自己参照であって インスタンス領域で自己を参照している訳ではないから あまり良い表現じゃないよな 石田晴久の訳か?
>>117 器が1個のリングバッファだったら自己参照になるな
ケチつけるんなら代替案だしてからにしろ
>>117 ググると、self referential structure みたいだから
他に訳しようもないかと
最近のオブジェクト志向プログラムの流れだと参照は インスタンスを指してるイメージがするから 再帰的型定義みたいな言い方が適切かも 意訳過ぎるかもしれないけど
単に参照の連鎖を持つ構造と呼ぶのがわかりやすいんだけどな
123 :
デフォルトの名無しさん :2013/11/21(木) 16:42:07.43
124 :
デフォルトの名無しさん :2013/11/21(木) 17:06:26.63
>>104 なるほどサイトによってサーバーが違うんですね。
分かりました。
126 :
デフォルトの名無しさん :2013/11/21(木) 18:47:31.96
面接で聞かれた質問です int a=30; というコードはaで30を参照しているとならないのでしょうか? つまりaは参照型の変数ということにはならないのでしょうか?
ならない ちょっと落ち着いて初心者用の本を読んだ方がいい
128 :
デフォルトの名無しさん :2013/11/21(木) 18:58:53.80
何故でしょうか? aという変数は「a自身」ではなく30を指しているから参照型じゃないんでしょうか?
aという名前の整数を入れられる箱があって、そこに30が入っているのだ。
Cに参照型なんてないよ ポインタも含めて、値しか入れられない
131 :
デフォルトの名無しさん :2013/11/21(木) 19:05:19.55
つまりaというラベルによって30を参照しているということですよね?
>>131 その理解で間違いないが「参照型」の用語が間違っている
じゃあ、a=a+1; を実行したら、何が起きてると解釈するの?
134 :
デフォルトの名無しさん :2013/11/21(木) 19:08:05.93
分かりません
135 :
デフォルトの名無しさん :2013/11/21(木) 19:10:07.03
>>133 aが参照している30に1を足した値をaが参照するようにしている
と思いますが
そういうのを参照と言わない。 参照という言葉を自分の定義で使ってはいけない。 int a=30, b=30; を自分の言葉で説明してみな。
python, perlなんかとごっちゃになってるんじゃろ。
138 :
デフォルトの名無しさん :2013/11/21(木) 19:55:22.60
int *a; a=30; だとaは参照型になるでしょうか?
コンパイルエラーになります
参照型を忘れなさい 参照型なんて言葉どこから覚えてきたの?
C言語は参照型ってあるのか?
142 :
デフォルトの名無しさん :2013/11/21(木) 20:02:40.59
>>140 javaという言語しってますか?
javaでは基本型も参照型になるというクラスもあるそうで
というか変数=参照型らしいです。
C言語には参照型がありません 似た機構はポインタを使いますが、ポインタそのものは値です
基本型も参照型になるクラス=ラップクラスですね なのでjavaは全ての変数が参照型らしいです Cはポインタ型変数だけ参照型という事でいいですか?
いいえ 勝手に用語を拡張しないでください Cには参照型という概念が存在できない言語なんです。
Cに参照型なんかないってさっきから何度もレスあるのに、何なの? バカなの?
ポインタと参照は一緒だと聞きましたが
ちげーよ
アドレスの値を保有している変数という点では ポインタ変数と参照変数は一緒ですよね? ならば何が違うんでしょうか? 名前の違いだけですか?データ構造や機能は一緒でしょう?
>>142 javaという言語知ってます。
java != C言語分かってますか?
言語が変われば用語の有無・意味も変わるのです。
日本語に「もったいない」を意味する単語があるからといって、
英語に「もったいない」を意味する単語がないように、
javaに「参照型」という用語があるからといって、
C言語に「参照型」という用語があるとは限らないのです。
その変数への操作(代入や加算等)のレベルが違うもの ポインタは所詮ポインタの操作 アドレスをいじってるだけ 参照型変数は参照先の内容の操作 アドレスの指し先の内容をいじってる
> アドレスの値を保有している変数という点では > ポインタ変数と参照変数は一緒ですよね? yes > 名前の違いだけですか? no > データ構造や機能は一緒でしょう? no > ならば何が違うんでしょうか? ごめん、分からない。
質問 cでcのコードをコンパイルする命令(関数)ってあるの?
155 :
デフォルトの名無しさん :2013/11/21(木) 20:28:05.24
参照のない世界から来た男w
>>152 参照先の内容の変化はポインタでもできませんか?
int *a;
*a=10;
aはaの先の内容を10にしてるじゃないですか?
わかりにくいと思いますが、質問です。 現在、フォルダに入ってる画像(1000枚程度)を読み込んで、画像から得た情報をエクセルに書き込むプログラムを作っているのですが for文で画像を読み込んでいると(画像の名前は、1,2,3…1000)、255枚目以降は画像を読み込もうとするとエラーがでてしまいます。 なので、254枚しか読み込んで情報をエクセルに入力してくれません。 こういったことは、どのような要素で起こりえますか?
>>156 同じ効果を得ていても、同じ文意じゃないだろ?
* という演算子を余計に使ってるジャン
そうい面も含めて "型" といっているのだよ
>>157 エクセルのバージョンが古い可能性
(横の要素数 255要素までしか置けないから)
*という演算子はポインタを表しているのだから 付けないとダメだと思うのですが何故違う文意なんですか?
int *a; a += 2; ほら変数の操作
>>156 > 参照先の内容の変化はポインタでもできませんか?
できるよ。
> int *a;
> *a=10;
>
> aはaの先の内容を10にしてるじゃないですか?
してるよ。
ただし、上記のままで実行するとcore吐いて終了すると思う。
>>157 メモリ使いすぎとかかな?
プログラムが使ってるメモリを調べてみては?
あと、何言語でプログラム作ってるの?
>>159 すみません
エクセルは、画像を読み込んだら、そのたびに新しいのを作ってるので、その点は大丈夫だと思います。
(254個の画像を読み込んだら、254個のエクセルファイルができる)
>>156 なんでポインタと参照を区別してるかっつーと、
例えばC++にはどっちもあって、必ず言い分ける必要があるわけ。
その意味ではC言語にはポインタ型しかないから、
混乱しない為にも正確な用語を使おうってことなのよ。
>>161 *a +=2;じゃないですか?
エラー出ませんか?てさっき僕が指摘されたことですが。
ポインタ(アドレス)を進めてる ポインタの指し先の内容を変える 配列とポインタと文字列と、、、、 一旦自分用語をリセットして、C言語の本を読んでくれ その際、自分の知っている用語で置き換えて読まないでくれ
>>164 bugかな?
unsigned char, char型の変数を使ってない?
それで死んでいると思うよ。
どんなerrorか分からなければ、こちらではどうしようもないな。
どっかにcode貼ってよ。
でないと質問は受け付けられないわ。
2chでdebugなんてできない。
>>166 a += 2;
も大丈夫だし、
*a += 2;
も大丈夫。
実行結果は異なるけどね。
>>157 fclose してる?
同時に fopen できる数は多くないよ
ポインタは所詮ポインタの操作 アドレスをいじってるだけ 参照型変数は参照先の内容の操作 アドレスの指し先の内容をいじってる ↑ Cでは 上は*a=b; 下はa=&b; で目的によって文が変わりますからね javaではx=yという形しかありませんもんね そういうことを言っておられるんですね
また疑問がわいてきたんですが何故javaでは*を使わないんでしょうかね? Cで*を使ってるから著作権的に無理なんですかね? これはアドレス渡しをしているんだっていう目印が分からないじゃないですか
javaでは配列とオブジェクトは参照(アドレス渡し)。
うん?てかjavaではどうやって参照先の内容変えるんだっけ? x=yという形なら単に参照渡しですよね
fortranは単純変数も参照渡しだったりする
Cで参照型がどうのこうのって言ってる奴は まず、自分が使っているテキスト、リファレンスブックなりwebの参考ページをあげてみろって。 そうじゃなきゃ単なる嵐。
>>173 配列なら [] でアクセス。
オブジェクトならメソッドにやらせる。
かメンバ変数にアクセス。
あそっかメソッドか
> また疑問がわいてきたんですが何故javaでは*を使わないんでしょうかね? Cの後にjavaが出ているんだけど、 Cの方で問題視されている(bugの温床になりやすい)書き方はjavaに取り込みたくなかった。 そのため、*を使わせないようにした。 > Cで*を使ってるから著作権的に無理なんですかね? プログラミング言語の記法に著作権は存在しない。 だから、javaでも*を使おうと思えば使えた。 > これはアドレス渡しをしているんだっていう目印が分からないじゃないですか C言語なら、関数に渡す引数の定義で int func(int *x, int a, int b); って書くでしょ? *が変数名の前についているx変数のみアドレス渡しだって分かるじゃん?
これはアドレス渡しをしているんだっていう目印が分からないじゃないですか この話はjavaの事です
181 :
157 :2013/11/21(木) 21:11:46.37
>>168 すみません、コードは訳あって貼ることができません
unsigned char も charも使用してます
なぜこれで、死ぬことになるんでしょうか?
>>180 プログラマに対してポインタを隠蔽しようとしたんだろ。
かえってわかりづらいと思うがなw
Cのポインタは万能だけど強力過ぎて低能には使いこなせなかったので バグだらけのプログラムが世界中で蔓延する結果となった なんとかせなあかんと反省してJavaではポインタを廃した C++では参照を導入したが、Cの上位互換という性質上ポインタが 残され混迷を深めている
ポインタを多用すればバグが増えるってそれコンパイラ側の問題なんですか?
ものは試しだ、 unsigned char i; for(i=0;i<1000;i++){ fprintf(stdout, "i = %d\n", i); } ってやってごらんよ。 > コードは訳あって貼ることができません もうこの質問は打ち切りだ。 debugをcodeも見ずにできないわ。 一応、助言しておくと、 for() で使う変数iをintにすれば解決するんじゃない?
>>180 > これはアドレス渡しをしているんだっていう目印が分からないじゃないですか
>
> この話はjavaの事です
だから、目印なしでもなんとかなるように、
一律 address 渡しとした。
OK?
> ポインタを多用すればバグが増えるってそれコンパイラ側の問題なんですか?
腐れプログラマちゃんの脳みその問題。
>>186 ポインタ多用したらコード間違ってなくてもバグとか出るんですか?
というかバグの定義が分かりません
コンパイルエラーなのか
実行時障害なのか
コンパイルエラーなら取れるだろ エラー出ないのに、実行時にスタック壊してcore dumpしたり バッファオーバフロ脆弱性を仕込んだプログラムが多数なんだよ
バカほど自信満々だから手に負えない
190 :
157 :2013/11/21(木) 21:30:23.98
>>185 親切に答えてくださって、ありがとうございました
なんとか自力で頑張ってみます
違うよ バカだから自信満々なんだよ
ポインタがわからなくても問題ない言語ってあるし最近はハードがいいので速度にも困らない すごく根本的に勘違いしてるので直すのに時間がかかるわりには恩恵もあんまりない 他の言語を勧める バカにしているわけではない 言語にも向き不向きがある
>>187 bugとは、多くの場合 compile error ではなく、実行時障害のことです。
特に、実行時の意図しない障害です。
> ポインタ多用したらコード間違ってなくてもバグとか出るんですか?
code間違ってなかったらbugなぞ出ません!!!
間違いないと思って書いてても、気がつかないところで間違ってしまうもんなんです。
しかも見つけにくいときたもんだ。
で、賢い人がどこで間違いやすいのか、またその間違いを見つけにくいのか調査した結果、
* 使ってpointerの操作しているところがbugの温床になっている。
って結果になりました。
後発隊のjavaでは、*使うのやめましょうか。
ってお話になりましたとさ。
まずみんな口先だけじゃなくて定量化できる 実力の尺度を示せよ おれは基本情報処理試験をC言語で二度受験したことがあるぞ なんで聞いてくれ
それはひょっとしてギャグで言っているのか?
漢ならCASL II一択
なるほど、>194は情報処理試験を一度落ちたバカだし日本語も怪しいと。
1回受験すれば済む試験じゃないのか?
それポインタ関係なく、アルゴリズムのバグの話や
突っ込まれちゃった。とほほ。
それしょっちゅうやらかすわ 単体テストって大事
ライブラリがバグってたことは1回しかない Cは枯れてるし
204 :
デフォルトの名無しさん :2013/11/21(木) 21:53:38.05
>>203 Cが枯れてるってのは願望だね
まだ変動は終わってないから方法的懐疑は必要
標準ライブラリならバグってなくて当然じゃないか? Cの標準ライブラリは他言語と比べて著しく規模が小さいんだし たかだか数百の関数でバグ混入させちゃまずいだろう
206 :
デフォルトの名無しさん :2013/11/21(木) 21:59:12.94
>>154 命令を含めていいなら
spawnとかexecvとか
>>192 いまPHPで仕事してるけど、でっかい配列をリファレンスとか使わないで
値渡しでコピーしまくってるようなコードばっかりだわ。
それでも動いてるし、もう全部値渡しでいいんじゃないかって感じだわ。
メモリ容量は気にする必要は減ってるだろうけど、 性能を考える必要のある用途では無理だな。
基本情報の勉強してるんですが共通フレーム2007ってプログラマーは 意識してるんですか?
何それうまいの?
一般的にプログラムを読む速度ってどのくらいですか? 単位は適当にお願いします
100 lines / min ?
何を目的に読むかによるし、 プログラムがリーダブルかどうかによる。
>>212 は自分で書いた場合です。
他人のは知らんです。
参照って要するにポインタ演算子を使わずにポインタ変数を使って実体にアクセスできるようにしましたってだけだろ
217 :
デフォルトの名無しさん :2013/11/22(金) 19:56:20.55
>>207 昆虫並の知能しかないPHP厨ならそれが当たり前なんだろうけど、
普通のプログラマはそんなことはしないよ
将来拡張していったときに重くなったりメモリ食うようになったらどうするの?
経費削減のためにバーチャルホストに移行したときに重くなったらどうるの?
それから値渡しやってる箇所を書き換えるの?
それともこのシステムを動かすにはもっとメモリが必要だと言って無駄なリソースを要求するの?
PHP厨はクズだからこういうところが考えられない
そういう脳にハンディキャップを負ってる人種の書いたコードを引き合いに出されても全く参考にならない
>>217 そのもし〜だったら
のために努力するのはコスパが悪い
>>217 >それから値渡しやってる箇所を書き換えるの?
うん、それでいいと思う。
前提なしでもしの話をするんだったら、 拡張も移行も何もしなかったらどうするの? 将来のためとか言って無駄にかけた経費は誰が払うの? C厨はクズだからこういうところが考えられない とも言い換えれる。 使い分けもできず片方に固執する方がクズだろう。
>経費削減のためにバーチャルホストに移行したときに重くなったら 金もらって軽くしてあげるんじゃないの
すみません 簡単なものでいいので、C言語で配列を使ったプログラムお願いします
>>222 #include <stdio.h>
int main()
{
char s[] = "Hello work.";
printf("%s\n", s);
return 0;
}
>>222 int main(void)
{
int i, a[3];
a[0] = 111;
a[1] = 222;
a[2] = a[0] + a[1];
for(i=0;i<3;i++) {
fprintf(stdout, "a[%d] = %d\n", i, a[i]);
}
return 0;
}
>>222 #include <stdio.h>
int main(int ac, char **av) {
int i, j, a[] = {29, 7, 0, 3, -67, -12, 87, -8, 3, -6, -8, -54};
for(i = 0, j = 72; i <= sizeof(a) / sizeof(a[0]); j += a[i++])
putchar(j);
return 0;
}
うわーーーー 間違えて rm -f * *.core ってやったらソースが全部消えた これ戻せないの?
svnとかgit使えよ
$ echo undo && rm -rf / こっちが駄目なら、 $ echo redo && rm -rf / ってやってみ?
234 :
デフォルトの名無しさん :2013/11/24(日) 00:07:40.81
console作業必須なんだよね リモートでsshでログインしてて ランレベル1とかにしたらやばいよね
ともかくデバイス全部ddで吸い出せれば、あとはゆっくり作業できる。 roにできるならそれに越したことはないが。 そもそもそこまで労力かけてでも回復すべきファイルなの? そんな重要なら上にあるようなVCS使うべきだよね。
悠長に構えてる間にそのファイルシステムに誰かが書いたりしないんだろうな?
237 :
デフォルトの名無しさん :2013/11/24(日) 00:33:33.98
ゴミ箱ディレクトリに移動させる削除コマンドを自分で作れない
>>228 みたいな馬鹿が何でLinuxなんか使ってるんだろう
その手のフールプルーフ系ラッパーもよしあし。 素のシステムを使う機会ができたときに ふだんの習慣でどうせ回復できると思って怖い操作を実行してしまう。
>>237 ネットワークドライブ上のファイルをゴミ箱に入れるにはどうやったらいいの?
GoogleDrive
どこがCの話だ。鼬害もほどほどにね。
242 :
デフォルトの名無しさん :2013/11/24(日) 18:53:03.34
mblen関数に半角カナを指定した場合の戻り値は、s-jis環境なら1、euc-jpなら2、utf-8なら3となりますか? あと、s-jisであれば if(s=='ア') ←半角のア と書いて正常動作しますか? ちょっと環境がなくて試せませんので、わかる方教えてください。
euc-jpなら3バイトだろうな
244 :
デフォルトの名無しさん :2013/11/24(日) 21:48:46.22
複数のスレから一瞬で語句検索する方法教えて下さい。 例えばC言語なら俺に聞けスレはpart122まできてますよね? partの数字は忘れたけど質問した内容が分かるとき、キーワード で検索したいんです。
専ブラ使え grep 使え
>>244 その用途にCは向かない
正規表現使える言語の使用を検討すべき
>>245 専ブラってあの情報流出事件以来使えなくないですか?
●でしょ?
grepってブロック検索じゃなかったっけ?
"ありがとうございます"は検索できるけど
"りがとうございま"では検索できませんよね?
専ブラって有料か… ●以外の専ブラ教えて下さい
jre.dllとかhmjre.dllとかCで使えるよ
251 :
デフォルトの名無しさん :2013/11/24(日) 22:40:51.33
専ブラって有料か… ●以外の専ブラ教えて下さい
C#経験者です。 会社の先輩にC言語勉強しろと言われたので勉強してますが、 C#と比べると標準ライブラリが貧弱すぎて困っています。 C#の.Netのように大抵のものが入ってるライブラリはありませんか?
Cで外部ライブラリってあんま使わんな 難しいことしたきゃC++にしとけ
C#ってそんなに便利か?
無目的に「勉強」しようとするから訳のわからないところで詰まるのじゃ
.NET Frameworkがクソ便利
FA業界にいるが、C#なんて使ったときねー 装置制御はC++ MMIはC++/MFC ツール MFC で大抵書けちゃうからな
MFCなんか今更使うくらいならC#使うわ
既存のものを置き換えるほどではないけど 今1から作るならMFCよりはC#でWPFをつかうかなあ
>>258 今更MFCをつかうことはないだろうな
仕事だと昔からの遺産があるだな
ターゲットの製品はCで、開発用のツールはC#だな。C#が何かとクソ便利過ぎる。 ほんの一例だが、 string line = "aaa\tbbb\tccc"; string[] fields = line.Split('t'); これだけでaaa, bbb, cccの3つの文字列に分解出来るし、 他に、ループをマルチコアで並列で実行とか、既存関数の処理にキーワード(async,await)を 追加するだけでその部分を非同期に実行してくれる(非同期が終わったら続きの同期部分を処理) してくれるとか。
わかってないな MFCはネイティブアプリを作成することができる .NETは仮想環境上で動作するアプリしか作れない この差が決定的で.NETがどうあがいてもMFCの代わりにはならない点である
.netは無駄なメモリ食うだけ exeの肥大化、低速
264 :
デフォルトの名無しさん :2013/11/25(月) 08:59:17.31
ゲーム作るならDXライブラリと.NETどっちが良いですか? 例えばポケモンみたいなゲーム作るとして。
OpenGL いまなら WebGL でもいい
>>264 多分まともに一本完成させたことがないレベルと想定しつつ
DXライブラリを勧めよう
>>261 みたいな”ゆとり”が
char* line = "aaa\tbbb\tccc";
をaaa, bbb, cccの3つの文字列に分解するにはどうすればいいですか?
みたいな質問をしてるんだろうな
実際には"aaa\tbbb\tccc"みたいなベタはことは殆んど無くて
文字コード、tabを含む文字列、複数行にも最低限対応しないとCSVとしてはつかえない
そうなると.netのライブラリもお手上げだろ?
結局は自前でシコシコやるしかない
実務ではCと変わらないんだよ
おっさんだってC#使ってるし、いまさらアプリケーションでCとかあり得ん
>>268 CSVは公式仕様が決まってるから個人が独自に実装することなんてありえないよ。
C言語だろうとC#だろうと。
独自に実装してしまうと他人が作ったCSVを読めなかったり、他人が読めないCSVを吐くことになって都合が悪い。
CSV の公式仕様なんて存在するの?RFC4180 には\のエスケープがないようだけど?
272 :
261 :2013/11/25(月) 22:28:20.12
シフトJISで、区切りはタブで、フィールドに区切り文字を含む複数行のCSVファイルだとこんな感じだな。 もちろん、SetDelimitersにカンマを指定すれば、カンマ区切りの普通のCSVも扱えるし。 文字コードも、Unicode系、EUC、1バイトコード系とかEncodingに指定するだけでほとんど扱える。 using(TextFieldParser parser = new TextFieldParser("csvfile.csv", Encoding.GetEncoding("Shift_JIS"))) { parser.HasFieldsEnclosedInQuotes = true; parser.SetDelimiters("\t"); while (!parser.EndOfData) { string[] fields = parser.ReadFields(); } }
>>272 それは "〜" でくくられた中にある , を区切りとしてみなさないようにしてくれるの?また " をエスケープする方法は何を想定しているの?
\ でエスケープする処理系があったりするが、それには対応しているの?\ かりにそうだった場合、自体をエスケープする方法はなんなの?
274 :
261 :2013/11/25(月) 22:45:14.97
>>273 > それは "〜" でくくられた中にある , を区切りとしてみなさないようにしてくれるの?
してくれる
> " をエスケープする方法は何を想定しているの?
""でエスケープ出来る。
\でのエスケープは対応してないみたいだな。
スレチを得意げにいつまで続けるのか
Linux,gcc,makeのmakefileもここでいいのか?
>>271 公式仕様と言ったら普通はRFCだろう
君が2chに駄文を書き込めるのもHTTPがRFCで決められているおかげだよ
> RFC4180 には\のエスケープがないようだけど?
これは何が言いたいのかわからない。
RFCはあらゆる独自規格の最小公倍数を取るものじゃないし、
標準化のトレードオフと併せていくつかの独自実装は切り捨てるにきまってるだろう
UDPでサーバーとクライアント2つのチャットプログラムつくろうとしてるんだけど クライアント1がサーバーに接続→クライアント2がサーバーに接続→サーバーがそれぞれのクライアントに送り先のIPアドレスとポート番号を渡す →以降はサーバーを介さずクライアント1とクライアント2がrecvfromとsendtoでメッセージをやりとり の流れにしたいんだけどもサーバーの中継部分がようわからんちん
>>279 中継って何を?
UDPなんだからそのままそれぞれに投げさせればいいんじゃないの?
それより最初のユーザー2者のマッチングのが面倒そうだが
>>279 もしかしてホールパンチングとか使う話か?
イテレータについて質問です。 for(i=0; i<=10; i++)の文にある通り forは一つずつ順番に配列の要素にアクセスできます。 これはforはイテレータの機能があると言っていいのでしょうか?
>>282 イテレータの機能はイテレータ自身が持つ
イテレータの機能とはずばり、hasNext()問い合わせとfetchDataAndNext() 実行関数だ
Java の hasNext() は動作がきもいな
よくわからないからrubyで例えて教えてくれ
p != '\0' *p++ こういうことだ
C++ のイテレータの場合 *it がカレントオブジェクトなのに Java だと it.next() がカレントオブジェクトになるのがきもいんだ っていうかおまいらスレ違いだ
290 :
デフォルトの名無しさん :2013/11/27(水) 18:33:52.74
C言語なら得意なんだけどなぁと言っていたので、 ポインタを教えてって言ったら(知ってるけど) 「あ、ポインタは挫折しました」って言われた・・・・・・・・・。 ポインターだめなのに得意と言ってしまっていいの?
いかんでしょ
専門学校でC言語教えてましたって人に 「ANSI Cって何ですか?」って言われたことあるな
>>290 きっと俺達の知らないC言語があるんだろう
294 :
290 :2013/11/27(水) 19:21:46.55
でもハード得意って言ってるの
295 :
デフォルトの名無しさん :2013/11/27(水) 19:23:40.34
>>294 アセンブラしか分からない、ポインタは苦手って人なら知ってる
アセンブラが分かるならむしろ簡単だと思うんだが よほど変態的な使い方を見て苦手意識を抱いたのかも
いつもの変態的な使い方pls ↓
signal
>>296 やりたいことを実現するための記述のしかたが分からないだけだろう。
・プログラムを機能ごとの部品化できない人 ・多数の人と連携してプログラミングをしたことのない人(学生に多い) この2つのどちらか、もしくは両方当てはまる人は、ポインタを理解できない(というよりポインタの有用性がわからない)ケースが多い。
因果関係じゃないだろそれ
ポインタ関係なさすぎ
不思議だなw 「ポインタを理解できてる」という発言も、 「ポインタを理解できてない」という発言も、 なんか不思議に聞こえる。 おそらく、「ペンチを(略」とか、 プライヤー、ニッパー、ハンマーとかと同じ。 ただ使うだけでは??と思っちゃうから。
そう、使って覚える概念だよね。 言葉で説明したり理解しようとするとやっかいなもの。 ポインタとはポインタでしかない。
>>304 おまえの頭の悪いたとえのほうが理解できんわ
>>304 「ポインタ」を「微分・積分」に置き換えてみ。
数学の道具だから。
※ただし使い方を間違ってもどう間違ったかわからない※
数式の間違いと一緒だな。
大部分わかってれば完全理解なんていらない。
マシン寄りの質問なんですが 4×5っていう計算はコンピュータでは4×5をしてるのか 4を5回足してるのかどっちですか?
ポインタという名が抵抗感を生むのかもしれない。 単なるアドレスなのだと分かればなんてことはない。
a=4*5;の計算はアセンブラのコードだと LET a 0 SUM 0100 SUM 0100 SUM 0100 SUM 0100 SUM 0100 で良いですか?
>>311 その2者だけではなく、5を4回足してる可能性も考えてこそプログマラだ。
>>311 CPUの掛け算の命令はかける値によって計算時間がかわったりしないから、掛け算をやってるんじゃないの。
>>314 細かく言えばそうかもしれませんが本質は
掛け算なのか足し算なのかどっちでしょう?
掛け算の場合どういったアセンブラコードになりますか?
LET a 0
MULTI 0100
MULTI 0101
END
こんな感じですか?
>>315 計算時間は足し算も掛け算も一緒ですけどね
掛け算のほうが繰り上がりが無いから早いんですかね
出力されるアセンブリのコードはCのコードによる。 4*5と書いてあるのなら、通常、計算させずに最初から20になる。
掛け算の場合2倍はシフトですが、3倍って不可能じゃないですか? どうやってるんでしょう?36倍だと4*9ですが、どうやって3倍を実現 してるんですか?32倍してから仕方なく後は足し算をしてるんでしょうか?
>>297 間接(インダイレクト)アドレッシングが使えないチップも有るからね。
>>318 >計算時間は足し算も掛け算も一緒ですけどね
どういう意味だ?
>>319 4*5レベルなら計算ではなく20って決まってるんですか?
CPUの内部で演算をどういうロジックでやってるかは知らんけど、足し算を繰り返すなんてことはやってないだろ。
算術演算子なるものが存在するってことは、ふつうにやってれば 掛け算はシフトではないんでしょうか? 考えれば考えるほど難しいですねー どんな計算をしてるんだろう?
>>324 でもそのロジックはアセンブラを見たらわかるんでしょう?
誰か見た人いませんか?どうやって掛け算をしてるのか気になります
>>325 原始的なシフトしてから足す方式もあるし、キャッシュ方式もある。
100000*100000なんてのが
愚直に100000回足してると思っちゃダメだぞ。
>>327 キャッシュ方式だと、過去の計算を参照するため実行時間が長くなるほど
計算速度は早くなるんですか?
>>326 アセンブラみてもわからない。
アセンブラはCPUに掛け算しろって命令だから、CPUの中でどういう計算してるかはわからない。
CPUの作り方みたいな本を見たことあるから、そういうの見れば載ってるかもしれない。
>>328 違う。計算済みのテーブルがある。
2次キャッシュという意味でキャッシュ使うのは、処理系の機構。
CPU自体にそういう機能があるかも知れないが、俺は知らん。
ちなみに前者な方式だと、ビットシフトして1に当たった場合に加算という物。 10001010 * 00010100 の場合、 (10001010 << 4) + (10001010 << 2) が入る。
乗算器でぐぐればそれっぽいのでてくるやろ
>>333 わからんか・・。
7 6 5 4 3 2 1 0
0 0 0 1 0 1 0 0
こういう風に1に当たる部分の回数分、被乗数をシフトして加算していく。
335 :
デフォルトの名無しさん :2013/11/27(水) 22:06:22.97
2項 * のコンパイル結果くらい見ろよ mul か shl かわかればいいんだろ? 時間が気になるなら、まず実測してみろよ
>>334 なるほど
それって35倍とかでもできます?
337 :
デフォルトの名無しさん :2013/11/27(水) 22:12:15.66
できるっぽいですね 調べてみます^^ シフトすげー、これでCPU革命起きるでしょ
>>336 例えば10の35倍の場合
35 (10) = 100011 (2)
10 (10) = 1010 (2)
1010 * 100011 = (1010 << 5) + (1010 << 1) + (1010 << 0)
=101011110 (2) = 350 (10)
筆算で書くと
101000000
+000010100
+000001010
=101011110 (2) = 350 (10)
真面目に書いたのに釣りかよ・・
>>338 奇数の場合は>>0足したらいいだけですか、すげー
シフト凄いですね
>>339 いや釣りじゃないですよ、シフトって計算が一瞬でできるじゃないですか
このスレでシフトの話あんまり出てきませんよね?もっと話しましょう
あれ?これマイナスの掛け算は無理なのかな
いまのCPUだったらちょうど2倍とか4倍とかそういうんじゃないなら、 素直に掛け算は掛け算としてやらせたほうがいいと思うよ
>>343 なるほど、小数点の計算もありますからね
だからCPUがそういう演算してるんだって
>>313 sum というニーモニックを使うのか?そもそも使われる可能性があるのか?
加減乗除->add/sub/mul/div
和差積商->sum/diff/(product)/(quotient)
>>317 むしろ、乗算や除算を加算or減算の繰り返しではない方法で、たとえば CASL で記述できたら、アセンブラの学習は卒業だ
がんばってくれ
>>327 >キャッシュ方式
pentium のバグみたいなやつか?kwsk
じゃあお前は 37 * 52 をどうやって計算するんだ 37 を 52 回足すわけじゃないだろ? (37 * 5) * 10 + (37 * 2) って計算するだろ? この *10 の部分が2進数では *2 になり、それこそがシフトだ 革命でも何でもない、誰しもが小学校で学んでる技術だ
350 :
デフォルトの名無しさん :2013/11/27(水) 22:56:25.06
>>341 1bitずつじゃなく、任意のNbitを一定のクロックでシフトする回路図を書いてみな
入力Nに対応するワイヤが忽然と出現するわけじゃないので、
おまえが言うほど簡単じゃないぞ
# かつてCPU判別にシフト命令のバグを使い・・
ブースのアルゴリズムでぐぐってみよう
>>350 いやクロックは並列的に使えるんですから
Nビット同時にシフトするのは簡単なのでは?
クロックって電位みたいなもんですよね?
353 :
デフォルトの名無しさん :2013/11/27(水) 23:28:49.21
>>352 みたいなもんとか、知りもしないのに何で自信たっぷりなの?
355 :
デフォルトの名無しさん :2013/11/28(木) 00:24:55.11
まあ、クロックは電位であって、そこは間違っていない 二相クロックあたりになると怪しそうだが
すまんが、「クロックは電位」って意味がさっぱりわからん
心電図みたいなもんか?w
358 :
デフォルトの名無しさん :2013/11/28(木) 00:52:07.31
平たく言えばお日様みたいなもんだ クロックにもお日様にも raise と fall があって、 社会(システム)全体がそれにタイミングを合わせることで秩序をなしている クロックの表現は H (正極付近)と L (負極付近)の両極端の電位で、 それらが切り替わるエッジが非同期回路(零細)の納期みたいなもんだ 心電図と慣例づけたい人は矩形派を微分してみるといいだろう U波みたいのがあると困るんだけどね
アナログはデジタルじゃないけどデジタルはアナログなんだ
鼬害の話題で大間違いを垂れ流すのもいい加減にしろよ。 H/Lがなんで正極/負極なんだよpgr
361 :
デフォルトの名無しさん :2013/11/28(木) 01:00:28.82
発振器動かすのは2電源じゃなくて単電源だろ! ってことじゃね 知らねーけど
364 :
352 :2013/11/28(木) 08:36:40.60
クロックが電位ってのはどういう意味で使ったかっていうと、全ての 素子に対してその大きさや変位が同期してるからです だからクロックはエネルギーである電位と同じなのかと思いました
クロックは電位とか、電位はエネルギーとか、オレオレ定義やめとけ まわりが混乱するだけじゃなく、自分も混乱する
だから鼬害だってばよ。 まぁ尤も、そんな俺様定義の話なんか他の痛手も聞かないだろうけど。
>>308 ※ただし使い方を間違っても間違っていることにすら気付かない※
>>367 そういう奴は俺C言語得意だぜ♪ となるからまた別の話
※ただし使い方を間違うのを嫌ってDのような言語を創っちゃう強者もいる※
for(a; b; c) 最後の引数だけセミコロンが無いのは何故ですか?
for( ; ; )
while() も if()もセミコロンがないしな。
クロック自体は電位でなく時間単位だし、 クロックが主に使う電位も電圧=電位差であって エネルギーじゃなくエネルギー差だな 適当に言葉を使ってるのは確かだから気をつけろ
374 :
デフォルトの名無しさん :2013/11/28(木) 11:11:39.28
cの派生言語がこれだけ氾濫しているのは cが優れていた訳ではなく むしろ全く頼りなかったからこそなのだろう 今現在まさにその位置にいるのがjavascriptだ
いや、Cが優れていたんだろ 結局の所、移植性が一番大事
376 :
デフォルトの名無しさん :2013/11/28(木) 11:34:05.25
>>373 負極=GNDととってくれない人(たち?)が
三相交流ならぬ二相直流みたいなこと言い出してて
笑い転げてたら寝ちまってた
今思い返してみると、あいつ(ら?)シングルエンドと差動のことでも言いたかったのかね
377 :
デフォルトの名無しさん :2013/11/28(木) 11:38:45.91
>>363 その用語は使うとブラックボックスになるので避けていた
この判断が正しかったかどうかはご覧のとおり
バカがスレチを続ける 内容も見当違いだし永遠に寝てればいいのに
379 :
デフォルトの名無しさん :2013/11/28(木) 11:57:45.02
流れ読んでね
>>311 あたりから始まった乗算の話の中で
シフト演算についてマジレスplzがあったんだよ
C言語スレなんだから適切な板/スレ/サイト/書籍にリダイレクトして終了だろ
>>374 Cの派生って言っても、本当に派生してるのはC++とObjectiv-Cくらいで、他はぱっと見た目がCっぽいってだけだよね。
昔は±12Vのクロックとかあったな
RubyはC++が糞だったから産まれたんだろ 知ってるぜ
384 :
デフォルトの名無しさん :2013/11/28(木) 12:31:50.07
>>380 いや、あくまでCの話だよ
君(誰?)がついてこれるかどうかを配慮していないが
飽くまでって、確実に板違いだぞ CPUの機構なんだから
>>384 おまえのレスがどれとどれか特定してくれ
そうしたら、それがCの話かどうか判定してやるよ
ばれるシフトJISがどうかしたか
388 :
デフォルトの名無しさん :2013/11/28(木) 12:47:15.58
>>386 あんたに判定は頼んでないよ
俺がCの話だと断言してるんだ
お前がいくら断言しようがスレチはスレチ
391 :
デフォルトの名無しさん :2013/11/28(木) 13:57:04.44
>>373 クロックも電位も交流なので時間変数なのでは?
E=sin(ωt+Θ) (周期ω)
T=1 or 0 (周期ω)
>>391 それとレス先と何の関係が?
頭悪いと大変なんだな
お前バレてないと思ってるの? 自己顕示のためにあさっての意味不明なツッコミをする癖直せよ
何が時間変数なのでは?だよ 反論にしても話題の提供にしても全然繋がってない 他人にレス番付けるなら繋げろボケ 自分の満足のために、 自分のしてほしい話をする責務を他人に投げてんじゃねーよ
>>395 反論らしいことを書いてるのにアンカーつけてないやつのほうがイライラするわ。
チキンか。
複数のファイルで関数を使いまわすときはプロトタイプ宣言がいるのに、1つのファイルで適当に書く場合プロトタイプ宣言がいらないのってなんでですか?
>>396 で、どこが反論なわけ?コミュ障ですか?
きちんと論理だって説明してくださいよ。ねえ。
>>397 1つのファイルでも必要
順番を入れ替えてみれば分かる
>>398 なんだこのスレとは関係ないけどムカつくことがあったからここに書き込んだだけなのか。
なら許すよ。
スレちがいはほどほどにな。
ひとつのファイルの中でも利用する部分と定義する部分の順序が逆だと(前方参照だか後方参照だか)プロトタイプ宣言は必要だよ
>>400 >クロックも電位も交流なので時間変数なのでは?
早くこれと
>>373 をつなげてくださいよQzさん
>>402 最初からそういうふうにアンカー振れよ。
煽るのにビビってるんじゃねえよ。
おまけに見えない敵と戦ってるし。
おれはその話題に関連してないからしらんわ。
>>403 ビビるビビらないって、本当にそれだけしか言ってないの?
頭の中中学生ですか?悪いだけじゃなくて空っぽですか?
関係ない話題振っておいて、 反論されたら他人の書いたカテゴリが同じって程度の文書のを貼って さも反論できたかのアピール こんな頭の悪いレスするのQzぐらいしかいないっつの いい加減学習しろよ
406 :
デフォルトの名無しさん :2013/11/28(木) 14:42:59.23
>>390 おまえさ、レポートは自分で書いたのを出せよな
23分55秒もいらねえよ、350で言った回路図は紙1枚で充分だ
# 俺は提出せよとは言ってないが
>>404 ほんとうに見えない敵と戦ってるやつってめんどうだな。
ID付の板でもID変えて複数にみせてるとか言い出すヤツいるし。
病んでるわ。
>>407 別人ならなおさら悪いわ
つーかQzでも当事者でもないなら
本当に
>>404 って事だがわかってんのか?
>クロックも電位も交流なので時間変数なのでは?
早くこれと
>>373 をつなげろボケ
goto hell;
410 :
シフト :2013/11/28(木) 18:16:53.16
なんか昨日俺がしてた話でまだ盛り上がってますね 結局Nビットを同時にクロックから並列的に線をつないでやれば 簡単だと思いますけどね、フリップフロップの原理じゃないですか? 電子回路の仕組みは詳しく分からないけれども
411 :
デフォルトの名無しさん :2013/11/28(木) 18:54:08.26
>>410 おう、君か
昨夜は体に良い腹筋運動させてくれてありがとう
で、続きだが
並列さすのはいいが結果を選択せにゃならんだろ
ポニーテールみたいに束ねるとショートするぞ
どうする?
難しく考えなくていいぞ、ソフト屋の思考だけでちゃんと答えは出る
412 :
シフト :2013/11/28(木) 19:04:06.84
>>411 横にずらせばいいと思います、だからNビットを左に一斉に
413 :
デフォルトの名無しさん :2013/11/28(木) 19:09:15.77
>>412 それはおかしいね、並列させてるんじゃなかったの?
少なくとも (0,N]bit シフトさせた結果が同時に出てるはずなんだが
どうやって Nbit シフトの結果だけを単離するんだい?
おまえら、デンパ使えるんなら、2ch使わずに脳内で直接やれ
放送大学見ろや
416 :
シフト :2013/11/28(木) 20:02:51.10
417 :
デフォルトの名無しさん :2013/11/28(木) 20:05:13.30
418 :
デフォルトの名無しさん :2013/11/28(木) 20:57:09.98
シフトする前と、シフトした後 瞬間に状態が変化すると思うんですが
シーン....
420 :
デフォルトの名無しさん :2013/11/28(木) 22:57:53.41
グルン
>>399 >>401 御返事遅くなってすみません
入れ替えてもエラーでないからアレレー、って思ったんですよ
自己解決したんですが、引数・返り値ともにintだとプロトタイプ宣言なくてもOK、っていう全く関係ない部分でひっかかっていただけでした…
>>421 というか、C は前方参照をお気楽に int 決め打ちとする困ったちゃん
423 :
デフォルトの名無しさん :2013/11/29(金) 08:21:10.17
From: [422] ◆QZschizo.ptH <sage>
Date: 2013/11/29(金) 07:23:00.86
>>421 > というか、C は前方参照をお気楽に int 決め打ちとする困ったちゃん
> というか、C は前方参照をお気楽に int 決め打ちとする困ったちゃん
> というか、C は前方参照をお気楽に int 決め打ちとする困ったちゃん
> というか、C は前方参照をお気楽に int 決め打ちとする困ったちゃん
> というか、C は前方参照をお気楽に int 決め打ちとする困ったちゃん
> というか、C は前方参照をお気楽に int 決め打ちとする困ったちゃん
> というか、C は前方参照をお気楽に int 決め打ちとする困ったちゃん
> というか、C は前方参照をお気楽に int 決め打ちとする困ったちゃん
> というか、C は前方参照をお気楽に int 決め打ちとする困ったちゃん
> というか、C は前方参照をお気楽に int 決め打ちとする困ったちゃん
424 :
デフォルトの名無しさん :2013/11/29(金) 08:26:10.36
間違ってないが?
425 :
デフォルトの名無しさん :2013/11/29(金) 08:30:26.70
From: [422] ◆QZschizo.ptH <sage>
Date: 2013/11/29(金) 07:23:00.86
>>421 > というか、C は前方参照をお気楽に int 決め打ちとする困ったちゃん
> というか、C は前方参照をお気楽に int 決め打ちとする困ったちゃん
> というか、C は前方参照をお気楽に int 決め打ちとする困ったちゃん
> というか、C は前方参照をお気楽に int 決め打ちとする困ったちゃん
> というか、C は前方参照をお気楽に int 決め打ちとする困ったちゃん
> というか、C は前方参照をお気楽に int 決め打ちとする困ったちゃん
> というか、C は前方参照をお気楽に int 決め打ちとする困ったちゃん
> というか、C は前方参照をお気楽に int 決め打ちとする困ったちゃん
> というか、C は前方参照をお気楽に int 決め打ちとする困ったちゃん
> というか、C は前方参照をお気楽に int 決め打ちとする困ったちゃん
>>422 そりゃそうだ。
今時、ソースをメモ帳で書いてればな。
427 :
デフォルトの名無しさん :2013/11/29(金) 09:24:37.36
いいえ、ideoneでしかプログラムしません/できません
>>426 まるでメモ帳以外で書けば違う結果になるとでも言っているように見えるぞ。
Qzの頭は間違いだらけだけど レスの内容は別に間違ってないな
敢えて指摘するなら、「お気楽に」と「困ったちゃん」だけだな。 プロトタイプ宣言がないのも時には役に立つ。
QZの、「なんとかはいらない子っ」ってあれ何だっけ?
432 :
デフォルトの名無しさん :2013/11/29(金) 11:49:29.99
#define Qz
>>428 ん〜〜、あんたはプログラミングには向いてないな。
435 :
デフォルトの名無しさん :2013/11/29(金) 16:00:32.12
libtiffに詳しい人いますか? Deflate compression support is not configuredというエラーが出て 画像を読み込むことが出来ないのですが、どうすれば解決できるでしょうか?
なんでC言語ってプログラミング言語の頂点にして原点のような位置にいるんだろう。 対抗馬の言語はないのか?(アセンブラ除く。)
アセンブラ除くならマシン語
>>436 libtiffをDeflateサポートしてビルドし直す。
>>437 君が知らないだけでいくらでもある。
しかし、手続き型の最近の言語は何らかの形でCの影響を受けているのは事実。
>>439 >君が知らないだけでいくらでもある。
具体的には言えない!(キリッ
>>439 すみません…Deflateをサポートするにはどうすればいいんでしょうか?
libtiffをDL出来るところにありますか?
pascalalgoladaaplfortranforthbasic
>>430 循環させるときにはね、ほとんど経験したことがないなあ、代数式の処理くらいかな?
前方参照もしっかりみてくれる処理系って需要ありますか?
main関数の引数が必要なときって端末から文字を入力するときだけなのでしょうか? 端末から入力する事なんてあまりないと思います、データファイルを読み込んで処理 する事が多いと思うので必要性を感じないのですが必要なのでしょうか?
>>445 GUIを使う必要がない(使うまでもない)用途で便利。
つーか、複数のファイルを纏めてgrepするときにいちいちguiで指定するなんてとんでもない。
447 :
デフォルトの名無しさん :2013/11/29(金) 19:07:46.28
>>444 static関数は前方参照を完璧サポート!!
になって欲しくね?
>>441 libtiff公式。
そもそも、Deflateをサポートしていないビルドを何で使っているんだ?
>>447 C++で書いたコードをCにダウンコンバートするときにそう思うw
>>448 「libtiff linux」で出てきたサイトに従ってインストールしたらそうなってました…
>>451 「コマンドプロンプト 使い方」でググれ
エクスプローラから起動するにしても引数は渡される
もう、4,5年C++やってますがいまだにポインタがわかりません。 実用性の是非はともかく void** (**((**p)[]))(void** (**[])(void** (**)())); を1分以内で理解できるくらいじゃないと、ポインタがわかってるとはいえないですよね?
ゲームを作っているものですが質問です。 世界一難しいゲームって知ってますか? ○(自分)を動かして、障害物に当たらないようにしてゴールを目指すゲームです。 こういったシンプルなゲームは作りやすいと思うのですが、javaやjavascriptで作るのか それともCで作るのかどっちがゲームの処理速度は速いですかね?
IA32ネイティブが吐けるからjavascriptに決まってんじゃん
>>457 ブラウザゲームのほうがCで作ったアプリより早いという事になりませんか?
>>445 そのデータファイル名を指定したいときに使う
460 :
デフォルトの名無しさん :2013/11/29(金) 22:59:00.71
cのポインタについて誰か教えてください
Cのポインタは二つの顔を持つ
(**)
463 :
デフォルトの名無しさん :2013/11/29(金) 23:03:14.47
ポインタは光速度どころか脱出速度にすら達することが出来ないので ウルトラホーク2号があるんです
( * )( * ) x Y
>>460 ネタじゃなくマジな質問なら、ポインタのどこがどうわからないのか
466 :
465 :2013/11/29(金) 23:11:26.19
すまん途中で送ってしまった…
>>460 ネタじゃなくマジな質問なら、ポインタのどこがどうわからないのか
自分なりの理解の範囲内でいいから具体的に質問すれば
だれか答えてくれると思うよ
467 :
デフォルトの名無しさん :2013/11/29(金) 23:11:36.55
ありがとう
468 :
デフォルトの名無しさん :2013/11/29(金) 23:13:37.97
えっとintの使用アドレス数?
配列もわかりません。 int a[2][3]; aはint [3]を要素とするサイズが2の配列で合ってますか? int b[2][3][4]; はどうなりますか?
>>471 bはint [4]を要素とするサイズが3の配列を要素とするサイズが2の配列じゃん
これの何がわからないんだ?
>>474 「どこの」意味がわからないのか書けよ
int [4]の意味くらいわかるだろ?じゃあどこからわからなくなったのか書け
これで分かるかな。 int x[3] xは「intを要素とするサイズが3の配列」 int a[2][3] aは「intを要素とするサイズが3の配列」を要素とするサイズが2の配列
配列の配列
多次元配列の話題は荒れる
Cで荒れないのforだのwhileだの制御構造だけか
>>476 はい、そこはまではなんとかわかります。
int a[2][3][4]とすると、
「int[3][4]を要素とするサイズが2の配列」 ?
となって、あれ?多次元配列ってCには無かったんじゃ???
となってしまいます。
>>481 ポインタがわかってないだけだな
ポインタのこと勉強すればわかるようになる
>>481 int a[2][3][4] = {
{ {0,1,2,3}, {4,5,6,7}, {8,9,10,11}, },
{ {0,1,2,3}, {4,5,6,7}, {8,9,10,11}, },
};
Cには多次元配列はないよ。配列の配列。
>>481 Cに多次元配列はない。一次元のならびを多次元に見せてるだけ。
2*3*4=24、24個のintの大きさの箱のうち
一番小さい小パックが4つのかたまりの[4]
その4つ入りのパックを一つとする中パックが3つで[3][4]、
そしてさらにそれをひとつとする大パックが2つで[2][3][4]
Cにはないというなら、何になら多次元配列ってあるんだ?
C#
int[, ,] array1 = new int[4, 2, 3]; とか
>>485 FORTRAN知らないキッシュイーターがでしゃばるな
Cで書かれたlispは見かけるけど lispで書かれたCってあるの?
lispで書かれたCがほしけりゃ書けばいんじゃね?
書いてみろよw
実際の話、3次元配列って使うことある?
494 :
デフォルトの名無しさん :2013/11/30(土) 12:53:07.81
今ポインタの勉強をしていてポインタを使った値の入れ替えのプログラムを作ってみたんですが #include<stdio.h> void swap(int,int); int main(void) { int a,b; scanf("%d%d",&amp;a,&amp;b); printf("a=%d b=%d\n",a,b); printf("値の入れ替え\n"); swap(a,b); printf("a=%d b=%d\n",a,b); printf("終了"); return 0; }
495 :
デフォルトの名無しさん :2013/11/30(土) 12:56:28.53
void swap(int *pa,int *pb) { int work; work = *pa; *pa = *pb; *pb = work; } これで関数swapにエラーがあるようでコンパイルできません なにが間違っているのでしょうか?
>>494 プロトタイプ宣言と
void swap(int,int);
実際の関数の引数が違うじゃねぇか
void swap(int *pa,int *pb){...}
>>498 こういうアスペレスが一番困る
「引数の型」って何だよ。何を指してるのかがわからん
>>499 別に困らんだろ
俺的には
>>497 と同じ事を言ってると判断したぞ
仮にそうでなくても何に困ると
>>498 "引数"の宣言がありません
"型"は__error のメンバではありません
>>500 プロトタイプ宣言と引数の型が違うことはエラーの原因じゃないだろ
>>499 侮辱するために疾病名を使う手合って、団塊には未だに多いよね。
簡単な質問には大勢で答えがw ちょっとこみいってるとレスなしw void** (**((**p)[]))(void** (**[])(void** (**)())); はどうなったんだ?
505 :
デフォルトの名無しさん :2013/11/30(土) 13:30:44.67
すいませんでした・・・ 皆さん有難うございます
>>504 こんな可読性の悪い関数を書いた奴が悪い
しかも、関数って・・・
>>504 俺は、わからないから、説明して
(自分がわからないなら、質問形式で書き込みよろしく)
>>504 その関数ポインタを使う必要性ってどんな場合なの?
実用的でなくても必要性がなくても理解できなくちゃだめってことなんだよきっと
Yes, YOU can!
515 :
511 :2013/11/30(土) 15:29:00.29
>>454 そんなことはないと思う
四則演算はほとんどの人が理解していると言っていいだろ?
その応用である因数分解が出来なきゃ、四則演算を理解したことにはなりません、何て事にはならないよね?
(**((**p)[])) は戻り値が void** で引数が (void** (**[])(void** (**)())) の関数 (**p)[] は戻り値が void** で引数が (void** (**[])(void** (**)())) の関数のポインタのポインタ **p は戻り値が void** で引数が (void** (**[])(void** (**)())) の関数のポインタのポインタの配列 p は戻り値が void** で引数が (void** (**[])(void** (**)())) の関数のポインタのポインタの配列のポインタのポインタ こんな感じで順番に解読していけるんだけど正直面倒くさい
518 :
513 :2013/11/30(土) 15:37:04.96
>>515 意味わからないってどういうこと?
基本的な関数ポインタの使われ方だと思うが…
519 :
513 :2013/11/30(土) 15:38:43.46
>>516 四則演算がわかってれば(1*2(4)(3)+3(4(4+3)))だって計算できるだろ
これを計算できないってのは因数分解関係ない
520 :
513 :2013/11/30(土) 15:40:30.65
誰も知らないような変な仕様を使ってるならともかく、ごく基本的な要素を組み合わせてるだけだから 基本的な言語仕様が理解できていれば時間かけりゃ初心者でも解読できる。 「解読できない」ってのは基本的な仕様が理解できていないということ
>>504 そもそも、コンパイルできるのか?
俺もポインタが理解できていないと思われるので
コンパイルできるのかどうかすらわからん
>>520 その通り
>>454 だから一分以内に解読出来ないからって、それは理解してないことにはならないから安心しろ
>>519 結果を求めるのと解読するのでは、作業方向が違う
ポインタ解読に必要な能力は、因数分解系の能力であって、四則演算系の能力じゃない
因数分解もそうだけど 100桁くらいの数が素数かどうか判断するとかでも 小学生にでも出来るはずなんだよな
525 :
515 :2013/11/30(土) 16:44:54.67
>>518 そりゃ、ゆっくり見ていけばわかるよ。
ただこれが基本的な関数ポインタの使い方って言われても
どういう時にこんな関数ポインタを使う必要性が
出てくるのかがわかんねーもん
必要になったら考えればいいことであって。
527 :
デフォルトの名無しさん :2013/11/30(土) 18:28:40.46
情報と情報量の違いが分かりません 情報量は確率が絡むんですか?
イタチすぎ
ぽまいら〜〜〜
むしろ確率のみで定義されているようだよ 事象A 個別についての情報量は、確率の逆数がベースだ 事象A, 事象B, 事象C ... が含む確率空間全体での一種の期待値に似た概念で、その確率空間における平均情報量(エントロピー)というのもある 確率空間において事象Aが必ず発生する、といった場合は、平均情報量は 0 になる 起こるのがわかりきっているのであればそこから得られる情報は「ない」という価値観なんだね
531 :
デフォルトの名無しさん :2013/11/30(土) 18:59:24.34
どういうときに情報量使うんですか? 例えば、「asdfasdagsdfa」このテキストデータは10バイトっていうのは 情報であって情報量じゃないんですか?
>>531 すぐに思いつくのは「データ圧縮」かな
なにか圧縮したことがあったら、圧縮率の高いデータって表現の上では「偏り」があるわけで、適切に表現をあらためるとより短い符号で
同じ内容の情報が伝達できるわけだよね、そのあたりを示すのが「情報量」
http://ideone.com/3toYuB >「asdfasdagsdfa」このテキストデータは10バイト
実際にやってみると 「asdfasdagsdfa」のテキストデータの情報量は約2.2ビットだね
聞きかじりのコンピュータサイエンスの知識を披露できてご満悦のQZ
関数ポインタの配列のポインタぐらいまでしか使わんだろ実際。 変態どもめw
536 :
デフォルトの名無しさん :2013/11/30(土) 23:43:35.59
やっぱりポインタを理解できていない人って多いんですね さすが、Cの最大の難所
>>537 ポインタの概念は簡単だろう。
表記法が迷走しているだけで。
ポインタで挫折してる人の大半は概念じゃないだろ 概念なんて馬鹿でもわかる その表記法が理解できなくて挫折の原因となってるだろ
配列も文字列も構造体も参照の受け渡しもみ〜んなポインタ ポインタがないとな〜んにもできましぇ〜ん これを簡単と言って済ませる奴の話を聞いても無駄無駄無駄
演算子との順序とあいまって一見するとよくわからん。 (*++argv)[0], *++argv[0]
この場合優先順位じゃなくて結合方向
たまげたなぁ…
一概には言えないと思うけど 四則演算の計算コストって a+b a-b a*b a/b の4つって比で表すとどのくらいになります?
アセンブラ読め gcc -S filenameでOK
うそんw そんなに違うか?
a/b と pow(a,-1) だとどう?
違うものを比較されてもな
ごめんまちがえた a/b と a*pow(b,-1) だとどう?
なぜそんなことを知りたいのか?
>>545 bが定数なら、1:1:1:1。
>>551 一般的にpow()のコストがかなり大きいので、比較にならないほど。
pow()の中身は対数と冪乗だからね。
関数宣言前にvoid d_sort(int *)とあるのですがこれはつまりint型ポイント型のd_sortという変数があるということでいいのでしょうか?
このスレにポインタを理解できてる人はいない(↑レスみれば歴然) からポインタに関する質問は禁止にしようぜ
int*を引き数とする、戻り値のない関数d_sortがある。
寧ろ>555の日本語で文章を書く能力の乏しさに唖然とするよ。
d_sortがあるとは言っていない。 あるはずだからそのつもりでコンパイルしろと言ってるだけ。
つまりそれ自体が何か(を作る)の宣言ということではなく ただそのような関数があるかもしれませんよということを指し示しているということでよろしいでしょうか?
いや、「ある」という宣言だ。
d_sort という識別子が出てきたら「引数はintのポインタを受け、戻り無しの関数」と解釈せよ
無限ループかw
564 :
デフォルトの名無しさん :2013/12/02(月) 15:19:27.47
>>554 void と書いてある意味をちゃんと読め
話はそれからだ
>>554 C/C++では名前を参照する前に宣言がないとダメという古臭いルールが生き残っている
という前提知識が足りないのかもしれない
C言語やC++をLinuxで勉強することにメリットはありますか? Windowsと比較してどうなんでしょうか?
C/C++のライブラリはほとんどLinux向けに作られており、ビルド用のスクリプト群がLinuxでしか動かない そういったライブラリをWindowsで使うためには仮想環境のLinuxやCygwinなどのLinux環境を用意し、 その上でWindows用にクロスコンパイルする必要が生じる だからLinuxで開発した方が面倒事に巻き込まれることがない
568 :
デフォルトの名無しさん :2013/12/02(月) 18:28:59.44
>>566 CそのものがUNIX出身なので
UNIXライクな環境と親和性が高い
これはメリットであり同時にデメリットでもある
たとえば \n で改行が「常識」と強固に洗脳されることなど
>>568 おまえ、アホなんだから黙ってればいいのに
>>567 C言語やC++の勉強っていってんじゃん
ライブラリとどう関係があるんだよ
571 :
デフォルトの名無しさん :2013/12/02(月) 18:33:16.64
>>569 アホだから黙るんなら、おまえが真っ先だろうが
>>566 linuxのほうが敷居がひくいね。
WindowsでVisualStudioとか、簡単だからあんなのでおぼえるとろくなプログラマーにならないって
人がいるけど、実際は初心者はlinuxとかでコマンドラインでやるほうが簡単。
弊害でデバッガの使い方とかおぼえられないで、いつまでたってもprintf()デバッグをやってるとか
あるけど。
>>572 printf()でデバッグできる規模のソフトしかつくったことないなら黙ってろ
574 :
デフォルトの名無しさん :2013/12/02(月) 18:36:58.31
IDEは敷居が高いね。 きっと前世でIDEに申し訳ないことしちゃったんだと思う。 でも実用レベルに持っていく最短の道は、実績のあるIDEを使いこなせるようになることだよ。 IDEは優しいから許してくれるよ。
>>571 だって、言ってることがアホ丸出しなんだもん、しょうがないじゃん
576 :
デフォルトの名無しさん :2013/12/02(月) 18:40:23.79
>>575 アホでも黙らなくていいようだな、チャンピオンさん
プログラムを学ぶならLinux(UNIX)Cが一番良いよ Windows環境とかC++,Java見たいなのは プログラムを覚えるってより言語仕様とか ライブラリの使い方を覚えてるだけだからね それはプログラムを学ぶのとはちょっと違う
>>576 そっか、568 はネタで書いただけか?
わりぃわりぃ ヾ(゚д゚;)スマソ
>>574 2chで初心者が質問してるのを見ると、デバッガで変数の中身を見ながら
ステップ実行すれば一発で分かるのにって思うことが多いから、無理してでも
IDEを使うほうがいいかもしれんけど、独学だとつらいんだよね。
スクリーンショットが満載の親切な入門書とか買えばいいかもしれんけど。
580 :
デフォルトの名無しさん :2013/12/02(月) 18:50:36.43
>>579 確かにつらいよね。
VSのプロジェクトがmake相当だと聞いて、そこから一気に使えるようになった
覚えがある。
ただ、IDEの親切なデバッガはどうしても必要になるんだよなあ。
>>577 CやC++から入るとプログラミングをおぼえるっていうより言語仕様の勉強をやってるって感じになって、難しいわりに実りない印象。
582 :
デフォルトの名無しさん :2013/12/02(月) 18:56:14.95
意外と、高橋真奈著やさしいIDEが求められているのでは?
583 :
デフォルトの名無しさん :2013/12/02(月) 18:58:48.24
584 :
デフォルトの名無しさん :2013/12/02(月) 19:01:25.65
ちなみにWindowsではVS一択、LinuxではNetbeansがいいんじゃないかと思います。 Netbeansはインテリセンス相当の機能がちょっとおバカなのを除けば ほとんどVSエクスプレスと同じことができる。 Linuxでということなら環境構築が必要ないという一点でNetbeansおすすめ。
シェルスクリプト, make, コンパイラー、リンカー コマンドラインデバッガーとかは一般常識だからなぁ 基本的なデータ構造やアルゴリズムを知らなくても 高レイヤー層の言語なら書けちゃうけど、やっぱり 基礎のない人は、問題が複雑化してくると手が止まっちゃう ことが多いと思う 一生C#やJavaだけ触ってれば良いって言うのも一つの選択だし その方が実入りが良い可能性も有るけどね
586 :
デフォルトの名無しさん :2013/12/02(月) 19:18:40.88
結局ROM BASICが実入り最大だな
>>585 ↑
なんとなく聞いたことある単語を並べてみましたw
>>581 そうか?
言語仕様はすぐ覚えれるだろ?
>>588 間違えた時に何が起きるかまで把握してなければ無価値
>>587 わからないことは素直にわからないと聞いた方がいい
591 :
デフォルトの名無しさん :2013/12/02(月) 19:53:43.71
煽れば何か落ちてくる時代は終わったしね
592 :
デフォルトの名無しさん :2013/12/02(月) 20:06:25.12
>>584 VC系の軽快な動作を求めるならcode-blocksだし
高機能がいいならEclipse一択だろう
なんでNetBeansなんだ
>>584 VSは今月になるまでC99にすら対応してなかっただろ
IDEとして使うだけならいいけどコンパイラまでVSのものを使うのは最悪
595 :
デフォルトの名無しさん :2013/12/02(月) 21:55:30.16
#include <stdio.h> char *num2str(int i){ char str[30]; sprintf(str, "%d", i); return str; } int main(void){ int a, b; scanf("%d", &a); scanf("%d", &b); printf("%s %s¥n", num2str(a), num2str(b)); return 0; } これを修正してnum2strがa,bの数値の文字列を順に表示するプログラムにしたいんです char str[30]をグローバルにするのは多分合ってると思うのですが そうするとnum2str(b)がnum2str(a)と同じになってしまいます どうすればいいでしょうか
#include <stdio.h> char *num2str(char *str, int i){ sprintf(str, "%d", i); return str; } int main(void){ int a, b; char sa[30], sb[30]; scanf("%d", &a); scanf("%d", &b); printf("%s %s\n", num2str(sa, a), num2str(sb, b)); return 0; } チェックしてないけどこれでいけるはず。
597 :
デフォルトの名無しさん :2013/12/02(月) 23:29:54.22
古本屋でVisualC++6.0 実践プログラム技法という本を100円で買ってきました。 VS6.0を探してきてインストールしようと思います。 JVMをMSは扱えなくなったためMSDNにはVC6.0がありませんが、 亡くなった金子勇さんもC++6.0触ってたみたいだし興味があります。 今更ですがVC++6.0を1、2年かけて徹底的にやる価値はありますでしょうか。
絶対的な価値はある。 相対的な価値はない。
599 :
デフォルトの名無しさん :2013/12/02(月) 23:34:00.39
すみません、表題の説明をよく読んだらC言語のスレでした。 ご迷惑をおかけしました。上記内容はボツにしてください。 OMIT.
600 :
デフォルトの名無しさん :2013/12/02(月) 23:34:57.62
>>598 高速スレありがとうございます。
参考にさせていただきます。
>>600 どんな技術でも学んだ意味がゼロってことはない。やればやったなりの価値はある、
ただし最新のVSで最新の技術を学ぶことに比べると得られる価値は非常に少ない。
つまり最新の環境でやれ。
>>597 やめとけマジで
ネット上の適当なブログ見ながら
VCExpressで作ってたほうがまだ価値がある
VC6は一つ一つの機能がシャキシャキ動いて快適ではあるんだけどなw 下手をすると最新のSDKすら使えるかどうか
>>603 VC6でまともに使えるSDKは2003febまでだったような
2008が最強だな 2010以降はもっさり感が酷い
606 :
デフォルトの名無しさん :2013/12/03(火) 03:40:36.82
>>593 環境構築が必要ないからって書いてあるじゃないの。
>>606 そこに上がってるのはどれも特に必要ないだろ。
608 :
デフォルトの名無しさん :2013/12/03(火) 06:06:56.43
>>607 VS相当まで持っていくには拾い食い必須だし、手間かかりすぎ。
環境構築で精根尽き果てて、そこで終わる。
そして信者化。
しかも使いやすくもないし。
わざわざ劣ったものを苦労して使う必要は無い。
Emacsの時代から、環境構築のプロ!あれ?最初と目的違ってね?って人が
いくらでもいました。
>>595 ;
>return str;
寿命が尽きる変数への参照を返してはいけません
>char str[30]をグローバルにするのは多分合ってると思うのですが
「わからないからとりあえずグローバル」にするのはやめましょう。せめて「何故グローバルだとうまくいくのか(いってないけど)」を考えましょう
>そうするとnum2str(b)がnum2str(a)と同じになってしまいます
printf("%s %s¥n", num2str(a), num2str(b));
において、printfはnum2strの二回の呼び出しの後に評価されます
num2strの評価順は処理系依存(今回はnum2str(b)が先)ですが、二回の呼び出しが終了した後にprintfされるから、
二回目に書きかえられた値が2つ出力されるのは当然の結果です
596が答えを書いてくれてるけど、C言語の記憶域期間とポインタ、文字列の扱いについて勉強しなおしたほうがいい
610 :
デフォルトの名無しさん :2013/12/03(火) 07:09:19.80
>>597 製品開発の現場ではまだまだ現役だったりするから、まあ価値はあると思うよ。
現役というか、当時のVC++6.0で開発した過去の製品を新しい環境に移行させるのに、
金というか工数とかの問題が有るからってことだけどね。
>>599 VC++6.0でもC言語開発出来るし。というか、うちもそうだし。
>>606 そういう意味では
Emacsって劣ってたよね
目的と手段を取り違える愚かな奴がいるというだけ
スキルの低い人がが 「道具は使うもんだ。使われるもんじゃない(キリ」 みたいなことを言ってると、この人の場合は使わないんじゃなくて使えないって だけなのに、それがバレてないと思ってるんだってかわいそうになるな。
615 :
デフォルトの名無しさん :2013/12/03(火) 12:04:31.63
よくある誤解 IDEまで含めてCだと思ってしまう コンパイルって何?を中級者まで引きずる
使っているツールを見てどういう実装かをイメージする習慣がなければ永久に中級者未満
実装なんてイメージしてもストレス溜まるだけ 知らぬが仏
>>608 それでなんでわざわざNetBeans?
どちらにしろEclipse CDTと同じぐらいの設定は必要なんだが。
だったら軽快なCodeBlocks使えと。
おまいら、意外と?馬鹿なんだな(笑)
と馬鹿が申しております
CPUの命令をC言語のソースコード単位にしたらコンピュータの処理は早くなると 思いますが、これを実現したらどういった問題がありますか?
>>622 馬鹿も休み休み言え。
ソースコードをまるごとCPU命令にするって、どんだけ命令の種類が必要になるのか分かってんのか?
仮に代入一つとっても構造体のサイズごとにCPU命令を用意するってどんな罰ゲームだよ。
つーか、それ以前にメモリアクセスが変わらなきゃちっとも速くならねぇ。
いまでも大体ソースコードと対応してるだろ
そもそも
>>622 が何を言ってるのかわからん
もっと具体的に
>>626 1行ごとにCPUにフェッチする
累算レジスタ内部
1 include stdio.h
2 int main (void)
3 {
4 printf hello world !! () ;
5 }
6 return 0;
ちょっと違うけど、 インテルとかのCISC系も複雑なことを1つの命令でやるという思想、だったね。 ただCPUの高速化という点で、RISC系の命令をシンプルにするというのが今の主流だよね。 インテルも今では、内部的にRISC命令に変換して処理してるんだっけ?
ソースコード=1命令ってつまり1翻訳単位=1命令ってことだよな。10万行のコードが1命令とか胸熱…
とおもったら
>>627 か
とりあえず
・1文が複数行に分けて書かれてていた場合
・逆に全文が1行に納められていた場合
にどうすればいいと考えているのか教えてほしいな
俺には >a=4;b=5;c=6;d=7; は1CPU命令 、 >a=4; >b= >5;c= >6;d=7 >; は5CPU命令からなるコードに変換し、 なおかつ両者を完全に等価なプログラムへとコンパイル出来るコンパイラを作れる自信は無い
>>629 そんな質問してる奴がコンパイラをつくれるわけねーじゃん
コンパイ・セグンドなら
634 :
デフォルトの名無しさん :2013/12/03(火) 23:03:39.32
>>628 複雑とシンプルに明確な線引きがあるのがRISC、ないのがCISCさ
RISCは「シンプルだから」速いわけではない
そんならCISCもシンプルにすれば同じように速くなるはずだが
この単純計算はまったく成り立たない
RISC.vs.CISCの議論なんて世間だと前世紀で終わってるのにいまだに蒸し返してる2ch
>>634 > そんならCISCもシンプルにすれば同じように速くなるはずだが
なるよ。
そんなことができれば... ね。
637 :
デフォルトの名無しさん :2013/12/03(火) 23:15:51.68
やかましわい、根本的に何が違って、今どう折り合いつけとんのか知らんやつが 何が世間で何世紀じゃい
638 :
デフォルトの名無しさん :2013/12/03(火) 23:19:25.31
>>636 そんなことができればって、
add や mov のように RISC とまんま同じ内容の命令でも同じ速度は出ないよ
今の普通の PC で実測するとμOPの速度を測ってしまい、
RISC vs CISC にはならないけどね
>>638 CISC と RISC でまんま同じ命令で比較?
ひょっとして、バカ?
640 :
165 :2013/12/04(水) 19:27:42.16
明解C言語入門編が終わったんだけど 次はポインタ完全制覇とかでいいんかな
昔のPC-UNIXってメモリ2Mとか4Mで動いてたじゃん CPUにgccくらい搭載できるんじゃないの?
>>641 可能ではあっても意味は無い
金が有り余って困ってるなら億円かけて作れば?
>>642 同じ金をかけるのなら、V30 に Z80 を載っけてくれよ〜
昔、Zaurusにgccを乗せてたよ 主メモリは64MB、gccのバージョンは2.95.1だった
gcc見たいな屑コンパイラなんてそんなもんだろ
もっといいもの作ってくれよ
>>640 入門書1冊終わったなら作りたいもの作っとけ
それ以上の知識はマニアックだから必要に迫られないとなかなか覚えられないし、使いどころも難しい。実践しながら困ったときに随時勉強すればいい
>>648 VMwareみたいなものが作りたいです。
C言語より、アーキテクチャとOSのお勉強からだな
651 :
デフォルトの名無しさん :2013/12/05(木) 00:42:37.90
>>649 アセンブラ・・・つーか機械語
リング0より下のいわば−1なところ
>>650 OSを作るわけではありません
OSを動かす土壌を作りたいだけですけど?
仮想デバイス作るのは心が折れそうだけど頑張れ
VMwareみたいなものは、そういうのを作ってる会社へ入るか オープンソースであるか探れよ。 ゼロから作るのは無謀。
手始めにファミコンのエミュレータを作るのがよろし
657 :
デフォルトの名無しさん :2013/12/05(木) 01:45:22.81
俺もcはじめるがみんなどんな風にcを学んだか教えてくれ
K&R読んだ
取っ掛かりじゃなくて、上達の原動力のことか? 俺の場合、大学で自作シミュレータの画像表示をカッコ良くキレイにして 女の子にチヤホヤされるのがC上達の原動力となった。 そして今はプログラムとはほぼ無縁の仕事だ
三田何とかって人が書いたC言語入門ってやつがおやじの部屋に転がってたのでそれ読んでやってた クソ古いので全くおすすめできない
>>652 OSの仕組みを知らなくて、その土壌は作れないよ。
あと、C言語以前にアセンブラとかCPUの仕組みとかの知識も必要。
それから、その仮想環境で動かすOS用にデバイスドライバの作成も必要。
662 :
デフォルトの名無しさん :2013/12/05(木) 08:34:36.29
>>660 読むとポインタが分からなくなるという評判の悪書だね
そのfjからきく噂、実際に確かめたいものだが
お前fj知ってるジジイなのに、なんでそんな底辺スキルなんだ?
チョンだからだろ
三田何某の本で勉強したけど中身忘れたな。 ソースコードにある単語のクロスリファレンスを作成するサンプルが載ってたのはおぼえてる。
ジジイ、ジジイか それじゃあお前は何だ、このガキが 俺はお前さんがこの世に落っこってくる前からバグ作ってんだ
670 :
デフォルトの名無しさん :2013/12/05(木) 20:03:34.46
autoみたいな確信犯とかね
>>671 なんでトリップ外してんだ
お題スレでスルーされたからってここに書くなよ
あとな、ナップザック問題にグリーディ法で対応するのは初心者だぞ
674 :
671 :2013/12/06(金) 00:35:18.33
qzじゃねえっつうの
黒いモノを白く見せる世界
javascriptって、この市場からハブられるんだ
>>671 これって、ナップザック問題だっけ?整数計画問題だっけ?
678 :
デフォルトの名無しさん :2013/12/06(金) 03:40:55.44
>>676 JSはベタに書いても速いので、アルゴリズムを競うのには不向き。
この程度の問題では計測できないくらい高速。
最適化が掛からない劣った言語のほうが向いているのです。
どう考えたって大人の事情だろ
JSONパーサーをライブラリから呼び出すなら最初からjsで書いた方がはやいし、 xmlよりjsonの方がデータ転送量が少ない。javaってjavascriptに殺されるのか?
681 :
671 :2013/12/06(金) 06:15:40.76
>>677 そんな高尚な問題じゃないよ。
ド下手でもn^2、中級でnlogn、ちょっと考えればnのオーダー。
JavaScriptがないのは、 標準入出力だけで判定っていうのが作りにくかっただけじゃないかな どう考えてもCより遅いんだし、最大テストケースならそれなりに時間はかかるだろ。
>>683 なんでソースコード出してんの?
頭おかしいの?
日本語読めないの?
686 :
デフォルトの名無しさん :2013/12/06(金) 18:58:43.27
char s[10]; char s[0]=3; length(s)=1なのは何故ですか? 何故0じゃないの?
687 :
デフォルトの名無しさん :2013/12/06(金) 19:01:28.95
char s[0]=0; length(s)==0
688 :
デフォルトの名無しさん :2013/12/06(金) 19:09:01.18
誰が、どう見ても、perl.python,rubyは明らかにトレンドを過ぎただろ 既にstrutsのような臭いを放っている
>>686 lengthって何だよ?
Javaならメソッドにしなきゃならんし、
C/C++にlengthなんていう標準関数はない。
そもそもここはCスレだ。
693 :
デフォルトの名無しさん :2013/12/06(金) 23:28:03.75
間違えた lengthじゃなくて steirlenです。 int a[10]=a[0]=3; strlen(a[10])==1なのは何故?
#defineなどで自分でbool型を作った場合 //-------------------- #define bool int #define false (0) #define true (1) void func(int sex, int suki_na_sex) { bool is_okama = (bool)((sex == MALE) && (suki_na_sex == MALE)); } //-------------------- 何度も使う条件文を1度別の変数に格納して見やすくしたいのですが このようなキャストみたいな書き方はナンセンスでしょうか??
695 :
デフォルトの名無しさん :2013/12/06(金) 23:35:38.63
a[10]なんて番地は存在しない int a[10]; a[0]..a[9]までしか存在しない
boolなんて作らなくて良いから-1でも返しとけ cの標準ライブラリぐらい全部嫁。ソースから嫁。 嫌なら、この板に来るな。人生の無駄
#define pred(A,B) (bool)((A) == MALE && (B)==MALE)
普段、cのコードを書くことはなくっても、BSDのコードぐらい眺めるよね?
>>659 ライフラインや略奪者として取り組む方が上達するよ
その同じ条件式が何度も出てくるコードの骨格(if for whileブロックの連なりを)示してみ?
c言語でファイルに書き込んだ構造体のデータを検索して 見つけたデータだけを読み込むにはどうすればいいですか? 検索してもよくわからず。。。
エスパーすると、 構造体データがいくつもファイルに書いてあって、 その中から特定の条件に合うデータだけ探して、 みつかったらそれを読み込みたい、 とこういうことか? どんなデータがファイルのどこに書いてあるかがわからないなら、 先頭からデータを全部読み込んでチェックするしかないよ。 データの場所を探すのに使う特別なデータ(インデックス)を あらかじめ用意する必要がある。
>>694 強いて書くとすれば
enum Bool_ { FALSE, TRUE };
typedef enum Bool_ Bool;
int main(void) {
Bool b = (Bool)(1 == 1);
return 0;
}
>>693 たぶKava勉強した後にC言語勉強し始めたばっかりだと思うが
strlen関数は文字列の長さを帰す関数で
配列の長さを測る関数ではない。
例
#include <string.h>
char str[]="abc";
int len=0;
len=strlen(str);
結果のlen?3
Cはよくハードウェアを直接操作できるからOSやドライバを作成するのに 向いているなんて聞きますけど、 それらを作成できるまで到達してる人ってどの程度の割合ですか? 大抵の人はできる? それとも 大抵の人はできない?
アルゴリズム自体は難しくない ハードウェアの仕様書理解したり、仕様書の入手の方が難問だったりする エラーがあるとOS巻き込んでクラッシュするので、IDE無ければプログラム作れない奴には無理
で? あなたはOSなんて作れるの? 作れるなら晒してみ
OSが一般的じゃなかったころにOS造ってたわ
デバドラなら仕事で書いてるよ。そんなの全然珍しくないだろ。 お前にとっては雲の上の存在なのか?
>>711 逆だろ
OSやドライバ書いている人なんてもっとも低級だろw
>>710 そりゃそうでしょ?
仕事以外にCなんて何に使うんですか?
みんなスゴイな 俺は、プログラミング言語としてC言語から勉強し始めたけど デバイスドライバとか全然作れない って言うか、パソコンのハードに関しては全然知識が無いしな
>>710 作法をおぼえるだけならさほどでもないが
英文ドキュメントの山と格闘するのはご免だ
715 :
デフォルトの名無しさん :2013/12/07(土) 17:06:07.54
>>713 PCのハードは激ムズだよ
PCじゃないハードから始めた方がいい
C初心者に優しい環境もばっちり出そろっているし
PCと通信なら割かし敷居が低い
ただし母艦にいきなり繋いで煙ふいたりは気をつけたほうがいいが
Hello, blue screen.
717 :
デフォルトの名無しさん :2013/12/07(土) 18:25:08.42
っうぇうぇうぇ
718 :
デフォルトの名無しさん :2013/12/07(土) 18:26:09.04
wwewe
>>695 > a[10]なんて番地は存在しない
番地は存在するでしょ。
int a[10]; 値 a[0]、 a + 0 という番地。 じゃないの?
>>719 メモリ領域が確保されてないなら良いのか?
a[10]という番地は存在するしないの話なら存在するで終わる話
>>722 趣味がC
ヲタ
キタ━━━━━━(゚∀゚)━━━━━━ !!
俺は中学生の頃からC/C++を使っていたが、中学生の俺が仕事に就いてたはずはないから、少なくとも仕事でなかったことは確実
727 :
713 :2013/12/08(日) 08:24:45.74
>>715 一応、電気回路(弱電)の知識は、ある程度ありますが
やっぱり、オシロスコープや測定器やROM焼くやつ
とか必要ですか?
オシロスコープは高いので、お金が無いです……
>>723 そう。
もう少し正確に言うと、メモリ領域が確保されていることか保証されない。
ポインタの指す先はメモリとは限らないわけだか 知らないなら黙ってりゃ良いのに
まさかI/Oとか言いたいのか?
732 :
デフォルトの名無しさん :2013/12/08(日) 14:43:02.59
ポインタが指す先は型付のアドレスじゃないのか
>>730 メモリマップドIO だったとして、それはCPUからみてメモリアクセスとは違う作法なのか?
メモリマップドIO のアクセス手順が通常とは異なったとして、それをCPUが意識しているのか?
アクセス作法の違いは周辺回路でなんとかするのでは?
アクセスタイミングとか考えるとメモリとは違った扱いが求められる
736 :
デフォルトの名無しさん :2013/12/08(日) 21:13:36.97
ああ
C言語ではRead/Writeするかベクタテーブルからコールされるだけだよ 意識することはない
738 :
デフォルトの名無しさん :2013/12/08(日) 22:17:34.96
gotoでプログラム部分を挟むんですが遠すぎるとエラーがでます 何故ですか? goto label; 〜プログラム部分〜 label:
740 :
デフォルトの名無しさん :2013/12/08(日) 22:40:29.10
>>739 ライブラリが間にあるとエラーになるようです…
cの関数が間にあるだけじゃ通ったから
どういうエラーになるのでしょう? またコンパイラは何でしょう? ジャンプ時にオペランドに入りきらない部分を 他のレジスタで補完するような仕組みだとしたら、 コンパイラが何とかしてくれると思いますが;
742 :
デフォルトの名無しさん :2013/12/08(日) 23:11:35.49
isprintのマルチバイト文字列バージョンって何?
743 :
デフォルトの名無しさん :2013/12/08(日) 23:18:52.23
ロケールをUTF-8に設定するのはどうやるの?
>>738 > 遠すぎるとエラーがでます
>>740 > ライブラリが間にあるとエラーになるようです
言ってることが変わっちゃってるけど、
まあ置いといて、
>>741 の二つの質問に答えてよ。
>>738 ,740みたいになるのは、
libraryの呼び出しが原因だとしても、
「ライブラリが間にある」事自体が問題なのではなく、
「ライブラリが間にある」事によって、
c言語でgotoと書いている場所からlabel部分の間、
assemblerでのjump場所から着地点の間、
その間に数命令の増加があるため、
jump命令の制限に達してしまうため。
というのが最初に考えた回答。
まずは
>>741 の二つの質問に答えてよ。
×その間に数命令の増加があるため、 ○その間に数命令増加してしまい、
746 :
デフォルトの名無しさん :2013/12/08(日) 23:51:24.86
およそ何バイトくらいがgotoの最大飛行距離ですか?
cpuによる
まずは
>>741 の二つの質問に答えてよ。
748 :
デフォルトの名無しさん :2013/12/09(月) 00:02:54.08
分岐命令のレンジが問題になるのはおかしい コンパイラを窓から投げ捨てるかバグレポ送ってやれ
ライブラリがインライン展開されていない限り そんな命令数になるとは思えませんが。 そもそもそんなコンパイラはないでしょうが; (あったとしたらエラーすらはかないんじゃないでしょうか) 「遠すぎるとエラーがでます」と遠いとエラーと勝手に決めつけていますが、 ライブラリ単体では実験されましたか? gotoがない場合は試されましたか? その関数というのはライブラリと等価の処理をするのですか? 何にせよ、ソースコードとは言いませんから エラーの詳細と環境について情報を示して頂かないと 有意義な回答は得られないでしょう……。
グローバル変数の使い方の説明を見るとどこかのファイルで一回のみ定義して 他のファイルでははextern宣言するとなってるんですけど 具体的にどういうファイルでグローバル変数の定義したらいいのか目安とかあるんですかね?
>>750 特に目安はないが、そもそもグローバル変数の更新をかけるところで定義するのがいいかと
別解として「extern は要らない子!」=extern キーワードはまったく使わない
>>750 企業プロジェクトだと、グローバル変数は全て登録制でglobals.cに記述しないといけなかったり。
登録制なので、自由に設定できないし型も変更できない。
別の方針としては、プログラムのエントリポイントはmain()なのでmain()の含まれるソースで定義する。
これも他のソースの担当者が勝手に定義することを避けられるし、有意な値で初期化することもできる。
>>750 予備知識:
・グローバル変数は便利すぎるので頼りすぎて自分の首を絞めるリスクが高い
対策:
・自分でルールを決めてそれに従う
いちばんかんたんなルール:
・globals.h, globals.c の一箇所にまとめる
globals.h に extern宣言を並べて
使う先で #include "globals.h"
ちょっぴりステップアップ:
・構造体にまとめる
typedef struct {
int var1;
int var2;
} Data;
extern Data globalData;
さらにステップアップ:
※グローバル変数を出来る限り使わない※
構造体にする意味がわからない
名前空間
C++やC#のnamespaceの代用で使ってるつもりなら用途が違う。
globalを多用している古いプログラムを矯正する時に使われる手法
>>754 はそれを聞きかじって誤った理解をしたものと思われる
専門用語の説明求める相手にさらに高度な専門用語バリバリで読ませる気を全く感じさせないオナニーレスは問題ないの?
高度な専門用語(笑)
761 :
デフォルトの名無しさん :2013/12/09(月) 15:26:12.15
便所の落書きに何を期待してんだか
というか意味が分からないんだけど。
どれが高度な専門用語を使ったオナニーレスで、なんでソレに文句を言ってるのか。
>>759 は
>>750 で、
>>754 の説明の意味が分からなくてムカついてるとか?
グローバル変数を他から参照するならexternは必要 以上
>>762 なるほど
その見方をすれば辻褄が合うな
766 :
デフォルトの名無しさん :2013/12/09(月) 19:15:58.69
社員管理プログラムを作ろうとしているのですが ヘッダーファイルと構造化の使い方がまったくわからないから教えてください 自分で調べてみたけどサイトによって説明が違っていてわからないです
社員データをまとめて管理するために構造体を定義する。 構造体配列を宣言する。 社員データをファイルから読み込んで構造体配列に格納する。 構造体配列を操作してファイルに書き込む。
//SHAIN構造体 typedef struct { char namae[256];//名前 int nenrei;//年齢 } SHAIN; これでSHAIN data[64];と記述すれば、64人分の社員データを格納する構造体配列が使えるようになる。
>>770 >>771 そういうふうに作るんですか
ありがとうございます
ヘッダファイルって普通は使わないものなんですか?
小さいプログラムなら1ファイルで終わるので、だいだい自分でヘッダーを用意しなくてもできる。 ヘッダーは#includeで取り込むことができる。複数のコンパイル単位で型や関数の宣言部分などを共通化するときに使う。 詳しくは「分割コンパイル」を検索。
>>766 ポインタのさす先が「ない」場合がある、とか言いたかったの?
>>775 お前がポインタを理解していない初心者だという事は明らかだから、無理して回答しようとするな
同じだよ アドレスを直接叩くだけ
規格だと、ポインタは「変数への間接参照が可能な"何か"」 一般的にはアドレスが使われてるけど、アドレスじゃない他の"何か"を使っても問題ない アドレス以外を用いた実装は恥ずかしながら見たこと無いけど
>>776 ふーん
で、ポインタの指す先はメモリとは限らないとして、それはいったい何?
>>778 C++ のイテレータのようなからくりであってもいいのか、規格の段階では抽象的な表現なんだね
>>776 は具体的に何かは想定せずに抽象的な表現を求めていただけ?なんだかつまんないね
782 :
デフォルトの名無しさん :2013/12/10(火) 01:52:10.43
現在C言語において配列で表現されている行列を 構造体で表現するプログラムを組んでいます。 配列のほうは正常にプログラムが動作しております。 構造体のほうではおそらくどこかに計算ミスや表現の仕方が間違っている部分があり、 配列と同じような動作ができません… すごく初歩的なミスかもしれないので指摘してくださると助かります。 リンクが張れないためideoneに以下のアドレスを入力お願いいたします。 ideone.com/5R1ve3 なおcheck[][]という二次元行列がプログラム中にあるのですがこの中には 1か0しか数字が入りません。
このプログラムは配列や構造体を使って何をしたいのか、それぞれの関数はどんな挙動をするのかを教えてくれ。そうじゃなきゃ何が正しいのか分からん とりあえず、check[][]が1のときalpha_k,beta_kに0を代入しているのが気になった
>>783 GSLの行列ライブラリの実装ぐらい眺めて出直して来い
>>784 返信ありがとうございます!
このプログラムは他の処理と作用してやっと結果が出るプログラムなため
それをすべて載せるとかなりの量になるため何をしているかのとこだけリンクを
はりたいと思います。
申し訳ありませんがリンクを張れないため
このideoneのサイトにコメントとして記載されているpdfファイルを開いてみてください
ideone.com/UAFNeD
ここの34ページ目からの処理を行っております。
>>785 変死ありがとうござます!
GSLを使った実装もやって見たいと思います!
struct Matrix{ int row, column; double** imp;}; Matrix *matrix_constructor(int row, int col){ double **imp; // return imp; } Matrix *alpha, *beta, *result;
これって大学の演習とか卒業研究?
ごめんいろんな意味で俺の手に負えなそう ループカウンタをグローバル変数にしてるからメモリ消費を抑えたいのかと思えば構造体配列長が固定だったり、 小難しそうなことやってる割にはやたら読みにくいプログラムだったり… 「function関数は行列をあーして、ナントカ行列を生成する関数です」とか、そういう具体的な説明はできんのかね
>>792 いえいえ検討してくださっただけうれしいです!
友人からも読みにくいプログラムだと匙を投げられましたw
もう少しコードの整理と勉強してから出直してきます。
わざわざお時間を取らせてしまい申し訳なありません。
>>791 うちの大学も酷かったけど、とりあえず指導教官に死ねって言っといて
とりあえず、copy関数というからにはこれでいい気がするんだが void copy(int code_len,int check_cc){ sum_k = 0; for(j=0;j<check_cc;j++){ for(i=0;i<code_len;i++){ alpha_k[sum_k].num = check[j][i]; alpha_k[sum_k].gyou = j; alpha_k[sum_k].retu = i; beta_k[sum_k].num = check[j][i]; beta_k[sum_k].gyou = j; beta_k[sum_k].retu = i; sum_k++; } } } copy関数はcheckの内容をalpha_k[],beta[]にコピーするんだろ? alpha_k[].numは帯域変数だからオール0で初期化されるので、 以下にもcopy関数寄り後に呼ばれそうなupdate_alpha関数内の >alpha_k[i].num=alpha_front*alpha_back; 以外で0以外に書き変わらない(他に操作するところが無ければ) 敢えてcheck[][]が1のときにだけalpha[].num,beta[].numに0を代入しなければならない理由と、 check[][]が1のときにだけ行と列を設定しなければならない理由があるなら改めて説明してくれ
796 :
795 :2013/12/10(火) 03:26:07.23
誤字ひどすぎワロタ… _kが抜けてるところとか、変換ミスがあるところは補完して読んでくれちょ
ラムダはmathライブラリに名前食われてるからでしょ
>>795 alpha_k[].numに関しては後から更新されるためどんな値を入れてもいいと思ったので
とりあえず0としていました。alpha_k[].numとbrta_k[].numは正確にはcheck[][]と
同じ値ではなくcheck[][]で1が立っているところに何か数字が入るという意味です。
またupdate_alphaやupdate_betaはループの中で交互にでてくるのでお互いに値をどんどん更新することになります。
check[][]が1の時に書き換える理由は多分checkの中で1の数が非常に少ないからだと考えられます。
言葉足らずですみません。
わざわざ詳しい部分まで読んでくださり。本当に助かります。
sign=sign+ramda[i]; -> sign+=ramda[i] if(sign>=0) decode[i]=0; else if(sign<0) decode[i]=1; -> decode = sign >= 0 ? 0 : 1; check[j][i] == 1 // check は int? s/gyou/row/g s/retu/column/g 実際に必要な処理が分からなくても、何故か書き直したくなる
>>798 なるほど。それならやっぱり795で書いた形に修正すればなんかしら改善すると思われ
元のソースコードだと、全要素が0で初期化されたalpha_k[].num,beta_k[].numに0を代入するという形になってた。つまりゼロ行列からゼロ行列を作ってただけ
今回提示されなかった部分でalpha_k[].num,beta_k[]numがいじられていなければ、という前提だけれども
>check[][]が1の時に書き換える理由は多分checkの中で1の数が非常に少ないからだと考えられます。
処理を短くするのは大切なことだが、君の書いたプログラムを使う場合、最低でもalpha_k[]とbeta,k[]のgyo,retuに値を代入してあげないと、
>if(alpha_k[j].retu == beta_k[i].retu && alpha_k[j].gyou != beta_k[i].gyou)
この条件分岐で誤作動を起こすと思う。copy関数でgyoとretuを代入されなかった要素のgyoとretuは全て0になってるから
>>800 解決いたしました!!
本当に感謝してもしきれません!!
今回の件でまだまだC言語に関して勉強不足だということを実感いたしました。
本当に夜分遅くまでありがとうございました!!
c言語じゃなくて算数レベルのロジックがオカシイ
指導教官が世間知らずで、どうしようもないかもしれないけれど、 高校生でも、専門学校生でも、もっとマシなコードを書くぞ
論理的に破綻しているので書けません
.txtに12とか数字があってその数字を読み込んで、読み込んだその数字の配列を作成するプログラムって作れますか?
807 :
デフォルトの名無しさん :2013/12/10(火) 11:03:50.11
C言語でプログラミングをしていて、その際100個ほどデータファイルが 必要になって通し番号付けたいんだけどどうしたらいいですか? 100個ドラッグ選択して data1〜data100という名前を付けたいです。 元々の名前はバラバラです。
>>806 作れます。
「読み込んだその数字の配列」ってのが何だかわからんから、
期待したのと違うことになるかもしれんが。
>>807 シェルスクリプトでも書けばいいんじゃね?
その知識がないなら、100個くらい手でチマチマやった方が早い
>>806 // 例えばこんなファイルなら
// --
// 12
// 24
// --
// こんな感じで。
#include <stdio.h>
int main() {
FILE * fp = fopen("the.txt", "r");
char buf[1000]; // 行辺りバイト数
int array[10000]; // 最大行数
int cnt = 0;
while (fgets(buf, sizeof(buf), fp) != NULL) {
array[cnt++] = atoi(buf); // arrayに順番に要素を入れる。
}
fclose(fp);
return 0;
}
811 :
デフォルトの名無しさん :2013/12/10(火) 11:17:29.09
>>809 windowsのファイル操作の機能でありませんか?
絶対あると思うのですが、案外ないですかね
本当に困るんですよデータファイルが多すぎて
>>807 // それこそ、このスレ的にはプログラムで作ればいい。
#include <stdio.h>
int main()
{
for (int ic = 0; ic < 100; ++ic) {
char fileName[1000]; // 長さに注意
sprintf(fileName, "baseName.%d", ic);
FILE * fp = fopen(fileName, "w");
fclose(fp);
}
return 0;
}
813 :
デフォルトの名無しさん :2013/12/10(火) 11:21:15.99
>>812 それいいかもしれないですね
ただ、ファイル名だけテキストに抽出する方法ってwindowsにありますか?
sprintfはそれが条件ではないですか?
たかが100個、ここで聞いてる間に、1個6秒で変換すれば10分で終わってたのに。 それとも100個が嘘で、実は10000個あるっていうなら、 ファイル名のリストを作って、 それを使って名前を変更していくプログラムかスクリプトを作ればいい。
816 :
デフォルトの名無しさん :2013/12/10(火) 11:29:32.89
817 :
デフォルトの名無しさん :2013/12/10(火) 11:29:59.64
C:\test\ にあるファイル abc def ghi jkl mnn opq rst を popという名前にして通し番号を付けるという事ができたら満足です pop1 pop2 pop3 . .
釣り乙
819 :
デフォルトの名無しさん :2013/12/10(火) 12:35:18.83
>>818 釣りじゃないです
ファイル名を順番にテキストファイルに書き下ろす方法が分かりません
もちろん手動じゃないですよ、プログラムの中でです
スクリプトじゃなくてプログラムで作りたいのでどうやればいいのか…
これができたら
>>812 の方法で大丈夫だと思うのですが
>>819 文字列操作はC言語が最も苦手とすることだから特に理由がないなら別の言語使え
821 :
デフォルトの名無しさん :2013/12/10(火) 12:38:37.07
プログラムにこだわる理由 シェルみたいな即時性はないけど柔軟性があるので… シェルではいじれないAPIもCからいじれるのでプログラムが良いです
>>819 1.フォルダを新しく作る
2.対象ファイルを、1.のフォルダにコピーまたは移動する。
3.1.のフォルダ内で、連番プログラムを実行する。
824 :
デフォルトの名無しさん :2013/12/10(火) 12:41:28.08
>>820 ディレクトリからファイル名を順番に読み込むのってC言語では無理なんですか?
ということは端末からシェルでファイル名の一覧を表示して、それをテキストファイルに
コピーすればいいんですかね、シェルでもできそうですね
825 :
デフォルトの名無しさん :2013/12/10(火) 12:43:33.52
>>822 うわーややこしいし、難しい…
シェルでやります…
君が求めているのは魔法と呼ばれる未知の技術ではないのか 柔軟性とやらを発現するためにどのくらいマジックポイントを消費するのか
lsとmvのソースを読めばいいだけじゃね?
828 :
デフォルトの名無しさん :2013/12/10(火) 13:09:37.45
>>827 絶対無理ですね、ソースとか絶対読めないです
>>826 なんでC言語やシェルっていうのはユーザーに分かりやすい文法なのに
APIやVSの関数マクロみたいにOSの機能を呼び出すものは複雑で分かりにくい
んでしょうか?細かい部分をいじれるんだから分かりやすい文法とか引数
にしてほしいですよね、説明読んでも中々理解できないし
>>817 Explorerで複数ファイル選択してからリネームすると
(2), (3), …と付くけど、それでいいのでは
830 :
デフォルトの名無しさん :2013/12/10(火) 13:32:26.41
>>828 高機能になるほど、複雑化するのは当たり前
それをユーザフレンドリーにすること自体がC使いの仕事
>>828 Windowsよくわからないマンだから誤解とかあるかもしれないけど,とりあえず.CってのはUnixをいろんなマシンに移植しやすくするために作られた言語なんだ.POSIXもなかった頃だからUnixに限定してもOSの機能とか固まってないし言語の機能に組み込めないでしょ.
因みにPOSIXのシステムコールを見る限り簡素で手間は多いが複雑ではないと思う.
832 :
デフォルトの名無しさん :2013/12/10(火) 13:58:59.40
>>830 サイトが殆ど充実してないんですよね
理解できる日本人はいないんじゃないかって思うくらい
>>831 なるほど移植言語だからできるだけ簡素に作られてるんですね
簡素過ぎて、ディレクトリの概念さえない。
834 :
デフォルトの名無しさん :2013/12/10(火) 15:28:42.18
>>828 perlだと
#!/usr/bin/perl
$dir = "C:\\work\\tmp";
opendir DIR, $dir or die;
$count = 1;
while (readdir DIR) {
next if /^\.+/;
$cmd = sprintf("rename %s\\%s %03d", $dir, $_, $count++);
print $cmd."\n";
system $cmd;
}
closedir DIR;
バカには無理
cmd.exe に dir コマンド実行してもらえばいいw
837 :
デフォルトの名無しさん :2013/12/10(火) 17:13:36.15
すみません、初心者なのですが、gdbにてデバッガを行ったところ、 [New Thread 4678] Missing separate debuginfo for Try: yum --disablerepo='*' --enablerepo='*-debug*' install /usr/lib/debug/.build-id/81/a81be2e44c93640adedb62adc93a47f4a09dd1 のようなものが出てきました これは何なのでしょうか? ググっても出てこなかったのですが 素直に、表示されている通り、yumすればいいのでしょうか? しかし、あまり良く分からないものをyumして入れるのもどうなのかと思いまして アドバイスいただけたらと思います
838 :
デフォルトの名無しさん :2013/12/10(火) 17:49:00.41
>>832 だからニーズを感じるならおまえが作ればいい
只でばらまくのか、儲かる仕組みを考えるかは、自分次第
既出の著作に対する鋭いアンチテーゼこそ名著への道
/usr/lib/debugについて調べたら?
>>837 通常インストールされているアプリはデバッグ情報が省略されていて、
そのままだとgdbでデバッグできない。
デバッグに必要なソースやシンボル情報を入れたパッケージだから、
デバッグしたいなら入れるしかない。
いらなくなれば消せばいい。
エスパーすると、gccのコンパイルオブションで-gを入れてない
パーカパーカ
>>842 817からの流れだと、学生が宿題プログラムを片付けるのgdb使おうとしたら、
コンパイラオプション入れ忘れたって感じじゃん
素面で言ってるのか
なんか規制されてて書き込めませんでした
>>841 ?あ、いえ、gcc -gはしています
?gcc+gdbによるプログラムのデバッグ 第3回 gdbの便利な機能、デバッグの例
?(自分は直リン禁止されているようですのでタイトル書きます)
?というページを参考にして、
?$ gcc -g -O0 treesort1.c
?$ ./a.out
?$ gdb a.out core.4678としたさいに出てきました
>>845 工学部出たなら、余程のボンクラでもない限りgdbぐらい使うだろ
>>840 そのパッケージは上記の際のみ利用されるものなのでしょうか?
それとも、(まずありえないと思いますが)他の機会でも同じものが利用できるのでインストールしていたほうがいいと言うことなのでしょうか?
>>839 今から調べてみます
こういうのは大体、使ってるディストリのフォーラムに解決策が書いてある 英語最優先
>>848 他のデバッグの際に同じものが利用できる。
>>850 そうなのですか?
そうであれば開発用の機器には入れておいた方が後々何か役に立つかもしれませんね
ありがとうございます
852 :
デフォルトの名無しさん :2013/12/10(火) 22:53:19.74
平衡二分木のおすすめライブラリってありませんか?
>>852 その程度自前で書いても大した工数にはならんだろ
ttp : //cottonia-cotton.cocolog-nifty.com/backyard/2011/05/post-f195.html こんなのとか C++で書いた方が何かと楽だけどC言語での書き方も知っておいて損はないな
ポアソン分布の累積分布関数を計算するにはどうしますか? λ^i / i! の計算がバーストします
つ 任意精度演算
(λ/1)*(λ/2)*(λ/3)*(λ/4)*...
TwitterのクライアントソフトはC言語のみで作成可能ですか?
可能だけど、そんな質問をするキミには作成不可能
いえいえ
Twitterのクライアントソフトがどんな機能を持っているべきか日本語のみで説明できますか?
C言語で1人でゲーム制作をできるようになるにはどのくらい時間がかかりますか?
マルバツゲームとか、RPGとかレースとかで違う
誰もが一度は作りたいと思ったことがあるようなSRPGを作りたいんですけどね
漏れは一度も作りたいと思ったことは無いから 「誰もが」というのは間違ってる
確かにそうですね
つ SRPGツクール
それは考えましたが、自分で作りたいと思いまして
文法とアルゴリズム、データ構造、スレッド、オブジェクト指向、デザインパターン、リファクタリング、 回帰テスト、バージョン管理を理解して、多分、3〜5年ぐらいでver0.01ぐらい作れるんじゃね?
ゲーム制作の分厚い本を読みつつ、OSSのゲームエンジン2、3から設計を真似れば? 古い版と新しい版を見比べれば、どこで設計を失敗したかも分かるんじゃね?
>>870 そんなにかかるの?
買ったほうが安くね?
ものの試しに海外シュミレーションゲームのコミッタとコントリビュータの数を見てみろ
てすと
よりによってSRPGとなると、マトモにゲームらしいものにもっていくまでには この辺にいる奴らでもかなり脱落するというw
コアになるアルゴリズムだけなら趣味で扱うのに手頃な規模かもしれんけど、 いわゆるゲームデザインってやつがとんでもなく開発リソース食うからな。 素人はスタートレックくらいにしとけと。 http //ja.wikipedia.org/wiki/%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88%E3%83%AC%E3%83%83%E3%82%AF_%28%E3%83%9E%E3%82%A4%E3%82%B3%E3%83%B3%E3%82%B2%E3%83%BC%E3%83%A0%29
879 :
デフォルトの名無しさん :2013/12/11(水) 22:06:59.20
>>863 ゲームを作る=面白いと思う人を得る
アホみたいに早くこともあれば、絶望的に長くかかることもある
とりあえず人つったけど、最近は猫だったりもする
心をつかむのはプログラミング以上に難しいぞ
プログラミング入門なら将棋なりチェスなりのボードゲーム作る方が適当
SRPGを作りたいと決心して書店にある本を買って勉強する前に知っておくべき基本的なことはありますか? いきなり本読んで勉強し始めてもC言語は理解できるものですか?
決心は簡単に揺らぐということ 成果が得られないまま持続するというのは難しいということ
SRPGに限らずゲーム作りで重要なのはシナリオはもちろんキャラクタデザイン等のデザイン部分とゲーム内の効果音やBGMとかその他もろもろ それらを全部一からオリジナルで作りこむ必要がある。 プログラムなんかできてもほとんど関係ないよ
ワープロの使い方覚えたら小説書けますかってレベルだな
>>881 プログラムを書けるようになっても
まだそれは道のりの5%くらいに過ぎない
ということを知っておくべき
>>881 お目当ての本があるなら細かいことを考えないで買えばいいよ。
理解できなかったら、その部分を自分で調べたらそれが勉強になるし。
C言語に関する本を一冊読み終えてもまだゲーム作りはできないレベルですか? 他にもまだ読まなければいけない本はありますか?
勇者になりたいと決心しました。 魔王の倒し方という本はどこに売ってますか?
どんなゲーム作りたいかってビジョンがあれば、とりあえず始めりゃいい 壁にぶち当たったらネットでも本でも見ればいい
ゲーム作りが本当の目的なら、Cは選ばない方がいい。 WindowsがターゲットならC# AndroidがターゲットならJava iPhoneがターゲットならObj-C がおすすめ。
>>887 Cの入門書だけじゃゲームは作れないね。
昔のBASICの入門書だとブロック崩しのコードとか乗ってたけど、Cの入門書はゲームの解説とかしてるのは少ないと思う。
あとCの入門書は苦しん覚えるCとかwebで探せば買わなくていいかも。
C言語を唱えると思い描いた通りのゲームが出来上がるんです
>>881 おれの場合はCで倉庫番を作れるまでに2年ぐらいかかったかな。
最初は簡単なゲーム(双六とか)その辺を目標にしてみれば。
>>887 英語の教科書を1冊読み終えてもまだ小説は書けないレベルですか?
簡単な所からゲームを作って経験値を上げていけば、
将来、売れるものを作れるようになるかもね。
初心者はDxLibでもやっとけ 簡単にできるから
ゲームを作りたいならプログラマなんかになったらダメだよ(笑) 映画を作りたいならまず脚本の勉強をするだろ?
撮影技師から映画監督になった人は誰もいないようにね
>>887 作るゲームにもよるが、凝ったものでないなら入門書一冊の内容+αで十分ゲームは作れる
ただしそれは「入門書を終わらせればゲームが作れるようになる」ということではない。もっと言ってしまえばCの仕様書(かなり難解)の内容を全て覚えたとしても「ゲームが作れる」とは断言できない
本を読むことが目的じゃないんだから、何の本を読めばいいか考える暇があったら手を動かせ。本は必要に応じて辞書的に使えばいいんだ
釣りにマジレスしてどうすんだwww アホばっかだな
作りたいものがなければいくらお勉強しても無駄 逆にどうしても作りたいという情熱があれば必死こいて調べて作るから予め知識は必要ない 要はあなたは何がしたいのってこと
901 :
デフォルトの名無しさん :2013/12/12(木) 09:14:26.70
>>896 プログラマ出身のゲームデザイナーなら
2ch にも★いるやん
個人レベルなら自分でプログラムをおぼえたほうが早いな。 同人ゲームサークルで「プログラマー、グラフィック、サウンド、シナリオライター募集。当方、総監督です」 みたいにスタッフ募集しても集まらんし。
集まらないのは人徳がないからだろ
「器」としての仕事すらしないからだよ
>>902 これは「バンドメンバー募集。当方ボーカル。ギター、ドラム、ベース急募」のほうが10倍マシなレベルの募集だな。
ギルガメッシュの酒場 か 悪手でもカント寺院で探さなきゃね 何の約束も無しにLv1装備なしで1:1に佇んでてもサクサク無視して去られるだけだよ
907 :
デフォルトの名無しさん :2013/12/12(木) 11:11:00.53
VSで x=x+1;と間違えて if(a>1)x+x+1;とコードを間違えてもエラーが出ないのは何故でしょう? 勿論正しくは実行されませうんが
>>907 式に ; を付けたものも正しい文だから。
というか、x=x+1 も単なる式で、それに ; が付いて文になってるだけ。
>>907 間違ったコードなりに、正しく実行されるだろ。
>>905 「バンドメンバー募集。当方プロデューサー。ボーカル、ギター、ドラム、ベース急募」
だろ
>>908 // 25
void okp_strcat(char *dst, const char *src)
{
strcpy(strchr(dst, '\0'), src);
}
// 26
void okp_strins(char *dst, const char *src)
{
int len = strlen(src);
memmove(dst + len, dst, strlen(dst));
memcpy(dst, src, len);
}
// こういうコードを期待しているわけではないだろうなw
916 :
デフォルトの名無しさん :2013/12/12(木) 12:04:26.03
x+x+1;という式はxに変化もたらしますか? =のいらない式は ++ -- と限られてると思いますが
>>916 xに変化をもたらさなくても(文法用語では副作用がなくても)、式は式。
strcpy(a, b);
も式に;のついた文だし、
strlen(a);
も同じ。
明らかに副作用のない式とわかれば、
親切に警告してくれるコンパイラが多いと思うけど。
xから読みだす事に意味があるかもしれない
>>903 プログラムとかグラフィックとか地味な作業を人にやらせるのって、並大抵の「人徳」じゃムリ
金を出すか自分でやるかのどちらか
whil(hogehoge); とかな
グラフィッカーは集めやすい部類だと思うぞ。質はともかくとして ゲーム作ろうぜ系の企画はだいたいプログラマーのみ不在で頓挫する
へー
924 :
デフォルトの名無しさん :2013/12/12(木) 13:23:42.66
AOEみたいなRTSをCで作ってるんだけど、ユニットって360度自由に動かせる じゃないですか?あれってグラフィック360度全部用意してるんですか? ゲーム作りに詳しい人教えて下さい
3Dモデルにレンダリングしてる
926 :
デフォルトの名無しさん :2013/12/12(木) 13:32:19.84
927 :
デフォルトの名無しさん :2013/12/12(木) 13:35:43.76
AOEUのあの動作は3Dモデルですか?それとも 絵なんでしょうか?
問:3Dモデル無しで済ませる方法はないでしょうか 答:トップビューなら1枚絵のチップを回転させるだけで済みます やりたいことが労力に見合うかどうかを常に考えることが大切ですね
>>915 > // こういうコードを期待しているわけではないだろうなw
関数を利用するのではなく、ちゃんと自分で作ってくださいw
接頭辞okpが何の略か答えなさい
俺の股間がポリリズム
岡π
アマ○ンにC、C++、C#の本がありますが、SRPGを作るにはどれを最初にやればいいですか?
どれでもOK その程度の質問をする人なら、まず間違いなく 目的達成の前に挫折します。
釣り汚染度が一気に上昇しました 除厨センターにお申し出下さい
>>934 ふつうのLinuxプログラミング(青木峰郎)
やさしいc++入門(高橋まな)
Efffective C++
Linux環境設定のすべて
Linuxコマンド ポケットリファレンス
アルゴリズムクイックリファレンス(ヤドカリ)
VIm完全バイブル
入門Git(濱野純)
コードリーディング(Diomidis Spinellis)
NeHeのOpenGL,SDL入門
セガの人が書いたゲーム開発入門本
よく分からない洋書
これをPythonで開発すると、4つぐらいは省略できるからPythonで書け
c#なんてゲームのサンプルコードみたことない pygameのサンプルを模倣する方が先 大きさも手頃
unityってC#でしょ?
ゲームのアルゴリズムを自分で考える段階で、unityなんか使っても大変なだけ
c#でアルゴリズムを書くには人生が短すぎる
ロジック書くのはpythonでもC#でも変わらない つかpythonのほうがいろいろ大変そう。
890さんを見てC#に興味を持ちましたが、C#の本を購入して勉強し始めたらCとC++の本は必要ないんですか?
まったく別物だからイラナイ
そうなんですか、わかりました。 C#始めたらそれを集中に勉強すればいいんですね
950 :
デフォルトの名無しさん :2013/12/12(木) 17:23:22.01
ゲームアルゴリズムを学びたいのか、売り物を作りたいのか謎 入門なら基本となるゲームのアルゴリズムに集中した方が良いよ。 pygameだとサンプルもチュートリアルもフリーだし
>>934 PC‐9801 マシン語入門
美少女ゲーム制作講座―VISUAL BASIC for WINDOWS
実践PC‐98アセンブラ入門
STLやCollectionライブラリの使い方を覚えてる間に時間が無くなるに1ペリカ
ツクールを使わず有名なSRPGに似たものを自作したいのが動機ですね
滲み出す混濁(こんだく)の紋章 不遜なる狂気の器 湧きあがり・否定し 痺れ・瞬き 眠りを妨げる 爬行する鉄の王女 絶えず自壊する泥の人形 結合せよ 反発せよ 地に満ち己の無力を知れ
955 :
デフォルトの名無しさん :2013/12/12(木) 18:34:21.46
やばいぞ、何か詠唱している・・・
956 :
デフォルトの名無しさん :2013/12/12(木) 18:39:46.00
トップビュー以外ならどうやればいいですか? 例えばテニス フラッシュで検索したらFLASHのゲームがあると 思いますが、あれも3Dレンダリングしてますか?
Flash,Silverlightは死んだんだ webGLかcanvasに書くんだ
すれち
このスレよりゲ制作板のほうがいいと思う
配列使ってランダム関数でビンゴカード作ってるんですけど 数字が被らないようにするにはどうしたらいいですか?
ビンゴゲームなんて作って誰が遊んでくれるよ 作るだけ無駄 iosに未だ移植されていないFF7を移植するほうがよっぽど 需要は多いぞ
ランダム関数で数値を生成するんじゃなくて 最初から一意な数字を用意してそれをランダムに並べ替えたらどうじゃ
前準備 存在しえる数字の数だけの大きさの配列 A[] を用意 (トランプだと 52枠 とか) 配列の中に値を埋め込む ※ このときは順番に並んでても良い これを山場とし、山にある数 n を覚えておく (トランプだと n=52) 抽選 0 〜 山数 n-1 までの乱数で 抜き出す位置 i を決める A[i] が カードの値 被らないように 次の抽選では 山から A[i] を取り除き、山の数を1つ減らす A[j] = A[j+1] (j=i〜n-2) n = n -1 山がなくなるまで抽選を繰り返し
ありがとうございます参考にさせていただきます! まだ習い始めなんで自己満で作ってるだけです
配列の値のソートについて以下の通りに関数q_sort(int *a, int left, int right)を作れって問題なんですがさっぱりわからないので教えて下さい @配列中の適当な値(例えば中央にある値)をkey値とする Aa. 左からkeyより大きい値を探し見つかったらストップ(i番目) b. 右からkeyより小さい値を探し見つかったらストップ(j番目) c. i≧jならBへ、そうでなければi番目の値とj番目の値を入れ替えて、i+=1, j-=1 としてAaから繰り返し B前方の配列の長さが2以上なら@Aを繰り返す(前方の配列に対して関数q_sortの再帰呼び出し) C後方の配列の長さが2以上なら@Aを繰り返す(後方の配列に対して関数q_sortの再帰呼び出し)
>>965 名前からして明らかにクイックソートなんだしググればいいだけだろ…
# 学校はプログラミングの前にGoogleの使い方から教えた方がいいんじゃないだろうか
yahooのほうがいいだろ
プログラミング言語Cのp149に char ( *( *x() )[] )() x: function returning pointer to array of pointer to function returning char char ( *( *x[3] )() )[5] x: array[3] of pointer to function returning pointer to array[5] of char とあるんでんが、よくわかりません。よくある図と矢印で書いたらどういう感じになるので しょうか。
ああ まだ治ってなかったな
>>970 その程度のポインタが理解できないって基礎がなってないよ
ポインタの基礎から読み直してみなよ
>>971 試行錯誤してるんですがうまくいきません
どう直せばいいのでしょうか
>>974 ネットでクイックソートのソースコード探せばいいだけじゃん
なんでわざわざ動かないバグってるコードを使おうとするの?
おかしいな 問題に書かれている通りに実装したのに バグってるぞ
随分曖昧な問題だな
979 :
デフォルトの名無しさん :2013/12/13(金) 17:53:51.54
ここって技術的な会話があまりなされませんね
>>970 識別子と*を見つけたら、内側から外へ向かって読んでいく
そもそも、そんな複雑なポインタは使わん
>>977 問題に書かれてる通りに実装したのなら何と比較してバグだと判断したの?
仕様通りなら問題ないじゃん
クイックソートのコードをコピペしてきた生徒を吊し上げるための引っ掛け問題かもしれないし
char ( *( *x() )[] )() x: function returning pointer to array of pointer to function returning char *x() -> function returning pointer *(E)[] -> to array of pointer char (E)() -> to function returning char
>>965 演習室で印刷に失敗した裏紙に配列の繪と有向グラフと関数の対応関係を図にしてかけ
984 :
C言語なら俺に聞け(入門編)Part 123 :2013/12/13(金) 22:21:33.63
ほ
986 :
デフォルトの名無しさん :2013/12/14(土) 06:07:45.41
>>965 2のaとかbで見つからなかったときにどうするか書いてない
987 :
デフォルトの名無しさん :2013/12/14(土) 06:55:48.07
C++超初心者です C++についてなんですが、CLASS内で構造体を作ってその構造体メンバへアクセスしたいのですが、 クラスを継承したらうまくいったのですが、継承する以外に方法はありますでしょうか? ↓以下source class _CLASS{ public : _CLASS(){ } public : struct DATA{ int x; int y; }; struct DATA data = { 5, 6}; }; class _NewClass : _CLASS{ public : struct DATA data = {10, 20}; }; 以下(略)
スレタイ見ようZ
990 :
デフォルトの名無しさん :2013/12/14(土) 08:19:14.15
>>989 リンク先のを試してみたんですがエラーがToT
gccコンパイラだからっていうのは関係ないですよね・・・
もう少し試してみます…orz
エラーメッセージ読めない池沼はコンパイラつかう資格ねーよ 夜間中学入ってやりなおせ
つ -W -Wall
C++11じゃないなら、コンストラクタ書き直せ CLASS_() { data.x=5; data.y=6; } CLASS_(int x, int y) { data.x=x; data.y=y; }
池沼はとっくに別スレに無言で移動したようだぞ
M個の一桁の数字(重複なし)からなるM桁の数字を 上位の桁から出来るだけ大きい数を選択する手順で順列にしたとき n番目の数字を出力する関数を作成することは出来ますか? たとえば M = 4 で 数字[2, 3, 5, 7] からなるとき n = 3 は 7532 ← n = 1 7523 ← n = 2 7352 ← n = 3 7325 ← n = 4 ... なので int array[] = {2, 3, 5, 7}; int i = func(array, 4, 3); で i == 7352 となる func() が欲しいです
関数の中で n 版目が出て来るまでループすると時間がかかるので 出来ればループを使わないで済む方法が知りたいです
>>955 ベタに総あたりして、ソートして希望順位の値を出力するじゃだめなのかしらん?
自前でよういしろ
私は発見した。だが、それを書くには、 この余白は狭すぎる。
フェルマー乙
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。