_ハ、 _ハ、 (- ・ ヾ (- ・ ヾ  ̄\ ヾ  ̄\ ヾ (  ̄ ̄ ̄ヽヾ、 (  ̄ ̄ ̄ヽヾ、 | 〈 ゞ | 〈 ゞ / /| | ̄ ̄/ / | | / /| | ̄ ̄/ / | | // ヽニニ// ヽニニl. // ヽニニ// ヽニニl // //. // // ` ` .` `
いいかげんにしろ
>>1 乙かれ〜
しばらく厨房が騒ぐでしょうが、マタ〜リいきましょう。
まもなくここは 乂1000取り合戦場乂 となります。
\∧_ヘ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!! ,,、,、,,,
/三√ ゚Д゚) / \____________ ,,、,、,,,
/三/| ゚U゚|\ ,,、,、,,, ,,、,、,,,
,,、,、,,, U (:::::::::::) ,,、,、,,, \オーーーーーーーッ!!/
//三/|三|\ ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
∪ ∪ ( ) ( ) ( ) )
,,、,、,,, ,,、,、,,, ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
,,、,、,,, ( ) ( ) ( ) ( )
http://big.freett.com/scheme_a/num1000.swf
ここも荒れるな
あぼーん
あぼーん
>>1 >入門書レベルの質問はC言語質問所スレへ行け。
これは失敗だったな。もうすぐ無くなるスレへ行けとは。
あぼーん
あぼーん
あぼーん
>>JPS (last_char_was_1 == ' ')という式の値は必ず0か1になります。
あぼーん
まちがい。スマソ (last_char_was_space == ' ')という式の値は必ず0か1になります。
あぼーん
あぼーん
あぼーん
24 :
デフォルトの名無しさん :02/11/27 23:11
>荒らしてる香具師 つーか、質問所スレで論争になったらなったで文句言うくせに。 矛盾してるって。
あぼーん
あぼーん
>>20 おまえさー、常識とかないわけ?
こんな無駄遣いすれたてて恥ずかしいとか思わないの?
俺はおまえみたいなのが同じCをやっていると思うと恥ずかしいよ。
\ 馬 / \ 鹿 / ∩ ∩ | つ 「,"| ヾ∧ !,'っ_ ⊂_,! / ・ |ミ / ・ ヽつ (_'... |ミ ▼,__ | (゚Д゚; )..|ミ (゚Д゚ ,)・| (| .、)| (| 、)| | | | ・・| ヽ.._人 ヽ._・ν U"U U"U
>>20 あのコードだが、
nt ch, last_ch;
while ((ch = getchar()) != EOF) {
if (ch != ' ' || last_ch != ' ')
putchar(ch);
last_ch = ch;
}
で良いのでは?
あぼーん
あぼーん
あぼーん
あぼーん
>>20 じゃあ、xが整数のとき、!xの値はどうなるの?
あぼーん
あぼーん
あぼーん
あぼーん
あぼーん
あぼーん
>>34 >じゃあ、xが整数のとき、!xの値はどうなるの?
0か1になります。
あぼーん
このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。
45 :
デフォルトの名無しさん :02/11/27 23:19
ここにゲ製作板の房が流れ込んできたかな・・・
あぼーん
だめだこりゃ
48 :
デフォルトの名無しさん :02/11/27 23:20
あぼーん
あぼーん
あぼーん
あぼーん
あぼーん
まあ、1日も立てば落ち着くだろう。 しばらくすればニセスレのほうも削除されるだろうし。 厨ども、せいぜいがんがれや。いくら荒らしても無駄だがナー
あぼーん
あぼーん
あぼーん
あぼーん
あぼーん
ビクッ. ∧ ∧ ∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ Σ(゚Д゚;≡;゚д゚) < うお!なんかすごいところに迷い込んじまったぞゴルァ! ./ つ つ \______________________ 〜(_⌒ヽ ドキドキ )ノ `Jззз
あぼーん
あぼーん
あぼーん
あぼーん
65 :
デフォルトの名無しさん :02/11/27 23:26
まあ荒らしてるのは偽スレの1なんだろうなぁ・・・
あぼーん
あぼーん
でも何で連続投稿できるのだろう・・・?
あぼーん
あぼーん
| _ー|ー|-┐ __|_  ̄── | ノ ヽ/ | ヽ / | /丶/ | | | し^ヽ / \ ヽ(;´Д`)ノ
72 :
デフォルトの名無しさん :02/11/27 23:28
| _ー|ー|-┐ __|_ ー十 ̄ \ / ─_ | ノ ヽ/ | ヽ | | \ フ ヽヽ | /丶/ | _ | ∨ | / | し^ヽ / \/\ \ ヽ(;´Д`)ノ
見慣れたAAコピペばかりでつまらない…
75 :
デフォルトの名無しさん :02/11/27 23:29
一つ気づいた! 荒らしてる奴らは実はこのスレを偽スレよりもレスを多くするため仕方なく荒らしてるんだ! そして偽スレと圧倒的差がついたころにこっちのほうが賑わってるとか言って平和的に向こうを潰す気だ
こんなことしても偽スレは復活しないよ。
あぼーん
とりあえず謝っとく。 正直、すまなかった。
>>75 なるほど。
荒らしじゃなくて助けてくれてるんだね。
>>75 一つ気づいた!
そうやってコピペを止めようとしているんだな。
無駄だ。コピペは止まらない。
あぼーん
あぼーん
あぼーん
18 :西門 ◆J1DLkSnXwI :02/11/27 23:09
>>JPS
(last_char_was_1 == ' ')という式の値は必ず0か1になります。
20 :西門 ◆J1DLkSnXwI :02/11/27 23:10
まちがい。スマソ
(last_char_was_space == ' ')という式の値は必ず0か1になります。
29 :デフォルトの名無しさん :02/11/27 23:13
>>20 あのコードだが、
nt ch, last_ch;
while ((ch = getchar()) != EOF) {
if (ch != ' ' || last_ch != ' ')
putchar(ch);
last_ch = ch;
}
で良いのでは?
あぼーん
34 :デフォルトの名無しさん :02/11/27 23:15
>>20 じゃあ、xが整数のとき、!xの値はどうなるの?
41 :西門 ◆J1DLkSnXwI :02/11/27 23:18
>>34 >じゃあ、xが整数のとき、!xの値はどうなるの?
0か1になります。
44 :西門 ◆J1DLkSnXwI :02/11/27 23:19
>>29 そっちの方が良いかも。
48 :デフォルトの名無しさん :02/11/27 23:20
>>41 うそだろ?
あぼーん
あぼーん
同じ AA の繰り返しでもつまんねーよ。 何か芸しろ。
ほんとだよ! xが実数でも !x は整数の0か1になるよ。
94 :
デフォルトの名無しさん :02/11/27 23:40
あげ
レス数抜けばこっちが事実上本スレに!!
をを。 荒らしの美奈さん御苦労。
美奈タンが荒らしていたのか・・・。
98 :
デフォルトの名無しさん :02/11/27 23:42
レス数抜いたぞ! こっちが本スレだ!・・・元からだけど
99 :
デフォルトの名無しさん :02/11/27 23:43
なぜ論理演算子にXORがないんだろう? ビット演算子にはあるのに。
スマソ、論理演算子ね。
>質問は 「通じる日本語」 を書け。 >具体的には、少なくとも訊き返されないように十分な情報を盛りこみ、 >「オレ語」 は使うな。 こんなのいらんよ。つーか、書いても無駄だと思う。 >入門書レベルの質問はC言語質問所スレへ行け。 そんなスレいらない。つーか、なくなるし。 >なお、自助努力のうかがえない香具師は冷たくあしらわれる。 これも冗長だよ、「WEBで検索」「激しく未定義」でいいじゃん。 テンプレ長いのカコワルイ
>>105 えーっと、
(!!x)^(!!y)
とか?
>>104 それを言ったら、
> GUIなどの標準Cではできない事の質問は使用している開発環境のスレへ行け。
> ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへ行け。
これすら必要無い。
でも
> 入門書レベルの質問はC言語質問所スレへ行け。
これが要らないのには同意。
>>104 読まれているかどうかもわからないテンプレに、何でそれを書いて欲しいという
要望が出るか理解してるか?
本スレ争い(みっともない)でレス消費するのは止めろバカ。 両方いかせばいいだろうがバカ。
こっちが本当の雑談スレでつか?
>>106 いや、普通は条件が2つあるだろうから、
単に
(x > 0) ^ (y < 0)
とかでいいんじゃないの?
>>112 でも、条件が両方とも評価されちゃうジャン。
>>113 xorで両方評価しない方法があったら教えてほすぃ。
115 :
デフォルトの名無しさん :02/11/27 23:59
最近c言語を勉強し始めたものです。 あるサイトに ?#include<stdio.h> int main() { int a, b; printf("a,bを入力してください。n"); scanf("%d %d",&a, &b); printf("a = %d b = %dn", a, b); printf("a + b = %dn", a + b); printf("何かキーを押してくださいn"); getchar(); printf("End"); return 0; } このように書いてあって実行すると、 printf("a,bを入力してください。n");の前に scanf("%d %d",&a, &b);これがはいってきてgetcharと同時に操作が行われてしますようです。 これはどこか間違っているのでしょうか?
117 :
デフォルトの名無しさん :02/11/28 00:00
どっちが本スレ?
>>116 xor のおさらいしてきたほうが良いかと
>>117 何かについてわからなければ、わからないという事が助けになるかも知れない。
>>115 scanfは改行文字の前で入力を読み取るのを止める。
(正確には、いったん読んだ改行文字をungetcする)
getchar()はその改行文字を読み取って直ちに返ってきてしまう。
123 :
デフォルトの名無しさん :02/11/28 00:04
そうかー、必ず両方評価しなきゃ駄目か。
128 :
デフォルトの名無しさん :02/11/28 00:14
みなさんレスありがとうございます。 これだけいわれてもまだ理解できません。 具体的な直し方を教えていただけないでしょうか?
↑は115です。
132 :
デフォルトの名無しさん :02/11/28 00:19
つーか、普通にC言語質問所とおなじことするんだったら削除される のはこっちだと思う。タイトルの伝統はどうあれ先に立ったほうが 優先されるから。どうせ統合になったらなったで、論争が起これば 文句が出ることはすでにわかってることだ。だったら、Cスレが2つ あってもいいと思うのだが。
>>115 getchar()で止めたいってことでしょ?
getch(); conio.h 遣え!
>>128 すまんが、ここは添削スレじゃないんだ。
>>132 アフォ。
むこうは、こっちの旧スレがまだ600かそこらのときに
重複して立てたんだよ! その時点で考えれば、むこうは
後で立ったの。
>>132 どっちでも質問してどっちでも論争してたじゃねーか。
まったくおんなじスレ2つ作ってどうするよ?
上から順番にならないんです。 printf("a,bを入力してください。n"); これより先に scanf("%d %d",&a, &b); を読んじゃうんです。 あとgetcharでもとまりません。
というわで、 >入門書レベルの質問はC言語質問所スレへ行け。 を守って、そういう質問は向こうにきっちり誘導して差別化をはかるってのが いいと思うのだが。
>>139 どういうOSで何というコンパイラを使った?
あと、"してください。\n"じゃなくて"してください。n"と書いちゃったのか?
142 :
デフォルトの名無しさん :02/11/28 00:25
143 :
デフォルトの名無しさん :02/11/28 00:28
>>142 いや、もともと俺に聞けスレの範疇だったような気がするぞ。
>>139 #include <conio.h>して
getch(); 使え!るか??
>>143 つまり、1 の 「ソース丸投げ禁止」 は何の効力も持っていないと訴えたいわけか?
こんなところか? #include<stdio.h> int main(void) { int a, b, ret; char buf[256]; do { printf("a, b を入力してください: "); fgets(buf, sizeof(buf), stdin); ret = sscanf(buf, "%d %d", &a, &b); } while(ret < 1); ret--; while(ret < 1) { printf("a = %d, b を入力してください: ", a); fgets(buf, sizeof(buf), stdin); ret = sscanf(buf, "%d", &b); } printf("a = %d, b = %d\n", a, b); printf("a + b = %d\n", a + b); printf("何かキーを押してください:"); getchar(); printf("End"); return 0; }
本スレ逆転したんですね。
getch() 使ってみた。 #include<stdio.h> #include<conio.h> #include<ctype.h> void key_cushion(void) { while(kbhit()) getch(); } int get_int(const char *s) { int ret = 0, col = 0; char c; printf("%s を入力してください: ", s); key_cushion(); while(c = getch(), c != '\r' && c != '\n') { if(isdigit(c) && col < 8) { putchar(c); ret = ret * 10 + c - '0'; col++; } else if(c == '\b' && col) { printf("\b \b"); ret /= 10; col--; } } putchar('\n'); return ret; } int main(void) { int a = get_int("a"), b = get_int("b"); printf("a = %d, b = %d\n", a, b); printf("a + b = %d\n", a + b); printf("何かキーを押してください:"); key_cushion(); getch(); printf("\nEnd"); return 0; }
ダメ出しは無いかい? getch() バージョンの入力は自由ではないが。
煽られないと不安になるな。
sukiyaki!
ヒヒヒヒヒ #include<stdio.h> #include<ctype.h> int main(void) { char key[] = "A52A2245332A252B435B2222A2B2A2A23A2C32A3B5B2222A52B43532A2352C23A52A2246D2A3533B35K2A4D22A3224A45D2C25B2A32A5D2C25D4A26C4A1"; char *p = key; int i, c, b = 1; while(*p) { c = 0; for(i = 0; i < 8; i++) { if(*p == '0') { if(!*++p) break; b = !b; } c <<= 1; c += b; if((*p)-- == 'A') *p = '0'; if(isupper(*p)) b = !b; } if(c) putchar(c); } getchar(); return 0; }
ヒヒヒヒヒ #include <stdio.h> #define a do #define b ] #define c return #define d fopen #define e ( #define f fputc #define g fclose #define h ".smw" #define i = #define j FILE * #define l - #define m 3 #define n [ #define o + #define p ; #define q int #define r ) #define s while e z r #define t { #define u & #define w main #define y } q k e j r p q z i l m p q w e r t j x i d e u e e m o z r n h b r, u e m n h b r r p k e x r p g e x r p c z p y q k e j v r t a t f e e m o z r n h b, v r p y s p c m p y
156 :
デフォルトの名無しさん :02/11/28 04:34
>>155 154 に比べると全然おもろくないぞ。
こうだ int getchar();int putchar(int);int main(){char k[]="A52A2245332A252B435B2222A2" "B2A2A23A2C32A3B5B2222A52B43532A2352C23A52A2246D2A3533B35K2A4D22A3224A45D2C25B" "2A32A5D2C25D4A26C4A1",*p=k;int i,c,b=1;while(*p){c=0;for(i=0;i<8;i++){if(*p== '0'){if(!*++p)break;b=!b;}c=(c<<1)+b;if((*p)--=='A')*p='0';if(*p >= 'A')b=!b;} if(c)putchar(c);}getchar();return 0;}
159 :
デフォルトの名無しさん :02/11/28 09:09
>>158 原本は 155 ですが何か?
そもそもコピペではありませんが何か?
原本は 154 ですた・・・
161 :
デフォルトの名無しさん :02/11/28 18:07
本スレあげ
162 :
デフォルトの名無しさん :02/11/28 22:12
スクリプト言語しか作れない俺はだめですか?
>>162 言語が作れるならなかなか大したものだと思うが。
>>163 でも本格的なコンパイラを作るのができない。
マシン語ができないから。
>>164 じゃあ、Cにコンパイルすればよい。
後はCコンパイラに任せる。
>>165 My言語をCにコンパイルしてそれを別のCコンパイラにコンパイルさせるメリットがないきがする。
だれも使ってくれなさそう。
167 :
デフォルトの名無しさん :02/11/28 22:39
何度やってもエラーになります。どこが違うんでしょうか? ソース↓ #include<stdio.h> main() { int a; printef("Hello world!\n"); }
168 :
デフォルトの名無しさん :02/11/28 22:41
#include<stdio.h> main() { int a; //printef("Hello world!\n"); }
169 :
デフォルトの名無しさん :02/11/28 22:43
>>167 #include<stdio.h>
main()
{
int a;
printef("トロイの木馬をインストールしました!\n");
}
170 :
デフォルトの名無しさん :02/11/28 22:45
>>165 C言語にコンパイルすると、いろんな環境で走るから、
使ってもらいやすくなる。現にそういう処理系はたくさんある。
>>sourceを別のテキストへ書いている。
173 :
デフォルトの名無しさん :02/11/28 22:50
#include<stdio.h> int main(void); { int a; printef("Hello world!\n",a); }
174 :
デフォルトの名無しさん :02/11/28 22:51
初期の頃のC++って、Cのコードに変換かけてCコンパイラにコンパイル させてたという噂が、、、
176 :
デフォルトの名無しさん :02/11/28 22:54
エラーコードは?
何故素直に printf を使わないんだろう
178 :
デフォルトの名無しさん :02/11/28 22:56
#include<stdio.h> printef(char *s,int a){ printf("%s",s); } int main(void); { int a; printef("Hello world!\n",a); } プリントエフって言葉で聞いたんでしょ。
180 :
教えてください :02/11/28 23:02
最小値は求まるんですが、最大値がわけわからん数値になります・・ どこが間違えているのでしょうか? #include<stdio.h> #define NUM 4 main() { int suuji[NUM]; int i; int min; int max; min=suuji[0]; max=suuji[0]; printf("4つの値を入力してください。\n"); for(i=0; i<NUM; i++){ scanf("%d",&suuji[i]); if(min > suuji[i]) min=suuji[i]; if(max < suuji[i]) max=suuji[i]; } printf("最大値は%dで、最小値は%dです。\n",max,min); }
最初、suuji[0]に何が入っているか? 0なら?ランダムなら?
182 :
デフォルトの名無しさん :02/11/28 23:04
>>180 それはコンパイラのバグです。もっといいコンパイラを使いましょう。
そのバグを避けるにはminとmaxの宣言を以下のようにしてください。
static int min;
static int max;
>>180 ごめんちがった。
static int suji[NUM];
ってしてね。
おいおいキティガイが発生したぞ。
185 :
教えてください :02/11/28 23:12
>>182 やってみたんですが、今度は最小値がおかしくなりました・・
だからauto変数は初期値未定だっツノ
187 :
名無し@沢村 :02/11/28 23:16
>>180 それはsuujiとminとmaxを最初初期化しておけばいいです。
188 :
教えてください :02/11/28 23:16
>>185 こうしる!
int suuji[NUM] = {0};
>>186 だからstaticなら初期化してあるじゃん
そんなへんなstaticの使い方するなよ
192 :
デフォルトの名無しさん :02/11/28 23:18
suuji[0]に値が入ってから、min,maxに代入するとか、 max=0;min=INT_MAX;としておくとか・・・。 min=32767;...
>>188 あ゛ぁ゛ーー!?!?!?
もういっぺん言ってみろコラ!!!
誰もいっとらんわ! 書いとるんじゃ!
196 :
名無し@沢村 :02/11/28 23:20
完璧なコード #include<stdio.h> #define NUM 4 main() { int suuji[NUM]; int i; int min; int max; for(i=0; i<NUM; i++) {suuji[i]=0;} min=max=0; printf("4つの値を入力してください。\n"); for(i=0; i<NUM; i++){ scanf("%d",&suuji[i]); if(min > suuji[i]) min=suuji[i]; if(max < suuji[i]) max=suuji[i]; } printf("最大値は%dで、最小値は%dです。\n",max,min); }
>>191 悪かったよ
>180
グローバル変数で宣言しろ
うちのとこだと、INT_MIN と INT_MAX がlimits.hに定義されてるんだけどね ANSIなのかな、コレ max=INT_MIN; min=INT_MAX;
0でMAXを初期化していいんかいな、、、 すべてマイナスだった場合(以下略)
if(i==0){ max=suuji[i];//iは0でも可 min=suuji[i]; } これいれといてもいいぞ。
>>196 あんた頭悪すぎ。minを0で初期化してどーすんだ、ごらぁ
202 :
教えてください :02/11/28 23:25
どれが合ってんの?一体
>>196 とおもってよく見たらよかった。正直悪かったな。
>>202 196があってる
auto変数はとりあえず初期化しなさい。
なんで196があってんだ???
>>202 ちなみにコンパイラがどうこうというのとかは初心者を惑わすためのいぢわるだと思われるので信用しないように
なんで196があってるの?
全部に5入れても、minに0入るだろ
look at
>>200 .
forのすぐ下に入れときゃ良い。
ごめん
>>204 は勘違いだ 取り消す。
紛らわしくて済まん。
210 :
教えてください :02/11/28 23:32
これぐらい即答してよ・・
211 :
名無し@沢村 :02/11/28 23:32
皆々様方〜、いろいろありあとうございました、皆々様方〜! 私はここでコールバックタイマーを使用しろとか、複数トラックのデータをマージしてひとつのデータにまとめろとか、いろいろなアドバイスをいただきました。 でもはっきりいってそんな面倒なことはしたくなかったんです…。 はっきりいって手抜きに近い楽なやりかたで複数トラックをちゃんと演奏する方法を見つけたかったんです。 でもついにその方法が見つかったんです!! その完璧なルーチンをここに乗せますから、皆様方も楽にmidiシーケンサーをつくるときの参考にしてください、皆々様方〜! for(i=0;i<=i_Sum_Track[i_longest_Track];i++) {for(l=0;l<16;l++) {t[l]=0; if(CodeCount[l]!=0) {for(jj[l]=0;jj[l]<Onpu_Index[l];jj[l]++) {kk[l]=jj[l]*8; if(i==t[l] ) { _Multi_Time[l]= timeGetTime(); midiOutShortMsg(hMidiOut, 0xC0+l+ ((i_gattuki[l]) * 0x100)); midiOutShortMsg(hMidiOut, 0x0000B0+l+ ((7) * 0x100)+((possrider[l]) * 0x10000)); midiOutShortMsg(hMidiOut, 0x0000B0+l+ ((8) * 0x100)+((possrider_b[l]) * 0x10000)); midiOutShortMsg(hMidiOut, 0x0000B0+l+ ((10) * 0x100)+((possrider_s[l]) * 0x10000)); midiOutShortMsg(hMidiOut, (DataCode[l][kk[l]]) + (DataCode[l][kk[l]+1] * 0x100)+(DataCode[l][kk[l]+2] * 0x10000)); // Note On} t[l]+=DataCode[l][kk[l]+3]; if(i==t[l] ) { while (Play_Tempo(DataCode[l][kk[l]+3])>=timeGetTime()-_Multi_Time[l]); midiOutShortMsg(hMidiOut,(DataCode[l][kk[l]+4])+ (DataCode[l][kk[l]+5] * 0x100)+(DataCode[l][kk[l]+6] * 0x10000)); // Note Off } }} }}
なんか途中から僕の偽者がでてきたみたいですが、 勉強になりました。みなさんありがとうございました。
213 :
デフォルトの名無しさん :02/11/28 23:34
ウンコソース #include<stdio.h> #define NUM 4 main() { int suuji[NUM]; int i; int min; int max; printf("4つの値を入力してください。\n"); for(i=0; i<NUM; i++){ scanf("%d",&suuji[i]); if(i==0) { min=suuji[0]; max=suuji[0]; } if(min > suuji[i]) min=suuji[i]; if(max < suuji[i]) max=suuji[i]; } printf("最大値は%dで、最小値は%dです。\n",max,min); return 0; }
214 :
デフォルトの名無しさん :02/11/28 23:36
printf("4つの値を入力してください。\n"); scanf("%d", &suuji[0]); min= max= suuji[0]; for(i=1; i<NUM; i++){ scanf("%d",&suuji[i]); if (min > suuji[i]) min=suuji[i]; else if(max < suuji[i]) max=suuji[i]; } printf("最大値は%dで、最小値は%dです。\n",max,min);
#include <stdio.h> #define NUM 4 main(){ int i,suuji[NUM],max,min; printf("4つの値を入力してください。\n"); scanf("%d", &suuji[0]); min= max= suuji[0]; for(i=1; i<NUM; i++){ scanf("%d",&suuji[i]); min>suuji[i]?min=suuji[i]:max<suuji[i]?max=suuji[i]:1; } printf("max is %d and min is %d.\n",max,min); return 0; }
216 :
名無し@沢村 :02/11/28 23:46
皆々様方〜、いろいろありあとうございました、皆々様方〜! 私はここでコールバックタイマーを使用しろとか、複数トラックのデータをマージしてひとつのデータにまとめろとか、いろいろなアドバイスをいただきました。 でもはっきりいってそんな面倒なことはしたくなかったんです…。 はっきりいって手抜きに近い楽なやりかたで複数トラックをちゃんと演奏する方法を見つけたかったんです。 でもついにその方法が見つかったんです!! その完璧なルーチンをここに乗せますから、皆様方も楽にmidiシーケンサーをつくるときの参考にしてください、皆々様方〜! for(i=0;i<=i_Sum_Track[i_longest_Track];i++) {for(l=0;l<16;l++) {t[l]=0; if(CodeCount[l]!=0) {for(jj[l]=0;jj[l]<Onpu_Index[l];jj[l]++) {kk[l]=jj[l]*8; if(i==t[l] ) { _Multi_Time[l]= timeGetTime(); midiOutShortMsg(hMidiOut, 0xC0+l+ ((i_gattuki[l]) * 0x100)); midiOutShortMsg(hMidiOut, 0x0000B0+l+ ((7) * 0x100)+((possrider[l]) * 0x10000)); midiOutShortMsg(hMidiOut, 0x0000B0+l+ ((8) * 0x100)+((possrider_b[l]) * 0x10000)); midiOutShortMsg(hMidiOut, 0x0000B0+l+ ((10) * 0x100)+((possrider_s[l]) * 0x10000)); midiOutShortMsg(hMidiOut, (DataCode[l][kk[l]]) + (DataCode[l][kk[l]+1] * 0x100)+(DataCode[l][kk[l]+2] * 0x10000)); // Note On} t[l]+=DataCode[l][kk[l]+3]; if(i==t[l] ) { while (Play_Tempo(DataCode[l][kk[l]+3])>=timeGetTime()-_Multi_Time[l]); midiOutShortMsg(hMidiOut,(DataCode[l][kk[l]+4])+ (DataCode[l][kk[l]+5] * 0x100)+(DataCode[l][kk[l]+6] * 0x10000)); // Note Off } }} }}
#define NUM 4 main(){ int i,suuji[NUM],max,min; >printf("%dつの値を入力してください。\n",NUM);
219 :
デフォルトの名無しさん :02/11/29 03:19
また沢村かよ・・・
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| | 大盛りねぎだくギョク | |_________| ∧∧ || ( ゚д゚)|| / づΦ
221 :
デフォルトの名無しさん :02/11/29 11:56
本スレage
222 :
デフォルトの名無しさん :02/11/29 12:11
「アルゴリズムとデータ構造」スレより移動 今、16KBのメモリブロックがあって、その中に struct x { int n; char d[]; }; をなるべくたくさん並べたい。(ただし、d[]の実体の長さは どれも同じで、実行時に決まる。Lとしましょう。) どうやればポータブルにalignmentできる?
d[]の実体の長さはどれも同じで、実行時に決まる。 ってなに?
224 :
デフォルトの名無しさん :02/11/29 12:14
長さがsizeのバイトデータを、ある構造体Aの配列の大きさに 収めるために、sizeに必要なAの個数を求たいんですが、 現在以下の様に計算してます。 size/sizeof(A) + (size%sizeof(A) ? 1 : 0) sizeof(A)=10です。 Aのサイズが2の乗数だったらシフトとAND演算子が使えたんですが、 半端なので割り算を使ってます。 これより良い方法はないでしょうか?
(size + sizeof(A) - 1) / sizeof(A)
227 :
デフォルトの名無しさん :02/11/29 12:21
>>225 即レスありがとうございます。
なんかそれでいけそうです。
どうもでした!
char d[]; なんてできるの?
>>226 struct x {
int n;
char d[1];
};
の間違いじゃないのか?
d[]; だの d[0]; だのは通らなかったり警告出たりしないか?
で、「ポータブルにalignment」 の意味するところがわからないんだが。
なるべくコンパクトに、かつある境界単位に並べるという事か?
>>230 会話をしてくれ。
「違う」 とは、何がどう変わるという事だ?
struct x{ int n; } ; #define x_d(p) (char *)((p) + 1) とかは?
使い方は struct x *p = malloc(sizeof(struct x) + dの長さ); とかやって p->n = 0; memcpy(x_d(p), "dのデータ"); printf("%d %s\n",p->n,x_d(p)); みたいな感じ。 Cでunion使わずに多態やるときに使う。
s/memcpy/strcpy/
>>235 一見よさそうだが、アラインメントの関係で
struct x{
int n;
char c;
};
のような場合に無駄が出る事がある。
> Cでunion使わずに多態やるときに使う。 可変配列とは直接関係無いんじゃないか?
>>238 そうだけど、それが嫌ならx_c作れば良いんじゃない?
>>239 可変配列にも応用できるってことで。
>>234 例えば、40bitのデータをintの配列に保存するとき大きさをいくつにするかと
かやったことないのか?
40/32 = 1...8
単に割算して1にしちゃったら8bit足りないだろ。bitとbyteの違いはあるがそ
ういうことだ。
#define x_c(p) (char *)((p) + 1) #define x_d(p) ((char *)((p) + 1)+1)
>>236 それをスマートにアクセスできるようにしたいってこと。
>>243 >それをスマートにアクセスできるようにしたいってこと。
そのためにマクロ作ったんだけど・・
>>244 それはスマートじゃないと思う人間が多かったんだろうな。
246 :
デフォルトの名無しさん :02/11/29 13:03
えーと、それで 16KBのメモリブロックをvoid *blockが指しているとして、 dの長さがLバイトとして、 ・blockに、何個のstruct xが詰められるか、どう計算します? ・blockにつめてある、i番目のstruct xってどう書けばよいですか?
bsize = 16 * 1024; size = offsetof(struct x, d) + L; n = bsize / size; p = (struct x *)((struct {struct x x; char d[L];} *)block)[i]; 最後のは通るかどうかちょっと自信なし。
符号化とかならともかく アラインメント無視して詰めたら遅くなるだけだよ
>>248 すまめ、忘れてたよ。遅くなるどころか環境によってはSIGBUS食らうな。
#define align_size(x) (sizeof(struct {x _x; char _dummy;}) - sizeof(x))
const size_t align_size_x = align_size(x);
#define rooms(x, y) (((x) + (y) - 1)/(x))
bsize = 16 * 1024;
size = rooms(offsetof(struct x, d) + L, align_size_x);
n = bsize / size;
p = (struct x *)((struct {struct x x; char d[L];} *)block)[i];
250 :
デフォルトの名無しさん :02/11/29 14:07
>>249 B木とかのライブラリって、
こんな具合いに書いてあるもんなんでしょうかね。
やっぱ、メモリ上で木構造の勉強するのに比べると、
だいぶ複雑ですね。
>>241 その計算を (40+32-1)/32 でやらない香具師がいるのか?
253 :
デフォルトの名無しさん :02/11/29 16:17
>>249 const size_t align_size_x = align_size(x);
ってのは
const size_t align_size_x = align_size(struct x);
のこと?
これで、ちゃんとalignされるって、保証されるのかな…
254 :
◆SpXtQMM.WA :02/11/29 16:23
自由に使ってくれ #include <stdio.h> int main() { printf("あめま\n"); return 0; }
>>253 > const size_t align_size_x = align_size(struct x);
> のこと?
んだす。その後もこうだな。ボケてるよ…。
size = rooms(offsetof(struct x, d) + L, align_size_x) *align_size_x;
> これで、ちゃんとalignされるって、保証されるのかな…
struct x1 {struct x _x; char _dummy;} x1[2]; で
x1[1]._x も x1[0]._x 同様 align されることを考えれば、
sizeof(struct x1) は strcut x の alignment の倍数だということが分かる。
sizeof(struct x) も当然倍数なので、 sizeof(struct x1)-sizeof(struct x) も倍数。
sizeof(char) == 1 なので、この差は(おそらく)可能な最小値であり、
strcut x の alignment そのもの。
# 最小値でなくても align されることに変わりはない。
こんなとこでどーよ。
256 :
デフォルトの名無しさん :02/11/29 17:44
int main()ってどうゆう効果なの?main()じゃだめなの?
関数宣言/定義の戻り値の型は省略可能で、その場合int。 だから等価だが省略するのは古い書き方。
mainのintはくだらねえことで金切り声をだして時間と気力を浪費するバカよけだ
ファイル名を持つChar型の変数をファイル名にしようと次のように 組んだのですがエラーが出てしまいます。 char str[256]; char *fname="data.txt"; FILE *f=fopen(fname,"rt"); while(fgets(f,255,str)!=NULL) ← ここでアラー ・ ・ ・ どうか助けてください、お願いします
fgets() のプロトタイプを確認すれば原因はすぐわかると思います。 ところで、どんなアラーメッセージが出ますか?
'fgets' : 1 番目の引数を 'struct _iobuf *' から 'char *' に変換できません。
ア ラ ー
あらー>260ちゃんじゃないのぉ。大っきくなったわねぇ。
>>261 'struct _iobuf *' とは、FILE* のことです。
コンパイラがどうしてそれを char* に変換しようとしているかわかりますか?
ところで、260 の 1 行目は検討していただけましたか?
while(fgets(str,255,f)!=NULL)
ああ、わかりました・・・相当勘違いをしてました。 助言ありがとう御座います。
宗教板に「アラーメッセージ」ってスレ立てていいですか?
>>267 この板に立ててください。
そして、荒らされてください。
そっちに立てたか・・・。 アラーされてください。
ム板はよっぽどの事が無い限りアラーされないからナー。
273 :
デフォルトの名無しさん :02/11/29 20:03
今度初めてCを学ぶのですが 環境はどうすればいいですか? メモ帳+コンパイラがあればできると聞いたのですが もっと便利に使いやすいもので学びたいのですが そういうC用ツールってありますか? なるべくフリーがいいのですが。 お願いします。
>>274 見てきましたが結構使いにくそうです・・・。
別スレで聞いたほうがいいですかね?
>>275 いや、ふつーemacsです。
最初は他のエディタと違う雰囲気という観点で
使いにくいと錯覚しますが、それも最初の2,3日だけです。
>>273 「CPad」で検索しる!bccがいるけどね。どっちもフリーでつ。
初心者向けで分かりやすいでつ。
それで足りなくなったらBccDev
>>273 シェアウェアだけどエディタは秀丸がいいよ。
ただでも使いつづけられるけど、
grep画面からタグジャンプするときとかうざいので、
ケチらずに4000円払った方がいいよ。
TeraPad
テストコード程度ならNotepad使ってます。 むかしはEDLIN使ったけどね・・・
282 :
デフォルトの名無しさん :02/11/29 22:02
WinならVC++を使えよお前ら。
使ってますが何か?
VC++ってフリーなんですか?
一応 BCC Developer も挙げておこう。
.NET Framework 付属の最適化かからないコンパイラなら VC++ でも無料。
この文脈では、「VC++のIDE」の話ではないのか?
288 :
デフォルトの名無しさん :02/11/29 22:50
>>273 ですが、みなさん、こんなにレスありがとうございます・・・!
本当に感謝です。
で、自分なりにググって見たのですが
TeraPadはフリーで高機能というもので
かなりいい評判でした。
秀丸は超有名ですがこのフリーのエディタがいくつもあるなか
4000円はちょっと高い気がします。しかし学生なので
無料になるということなのでこの機会にやってみるのも
いいかなぁと思いました。
CPadもなかなか使いやすそうです。
個人的にはこれがいいかなと思ってるのですが
機能面ではどうなのですか?それについては分からないのです。
あと、VC++も調べてみたのですがフリーなのかシェア
なのかよく分からないんです。(本当に)
教えていただけないでしょうか?
長文読みにくくてすいません。
ではお願いします。
しゃぁからスレ違いやっちゅうに
>289 ちょ、まてや。 確かに>289の言いたいことは分からんでもないが 漏れはスレ違いとは思わんが スレタイよく見てみ
>GUIなどの標準Cではできない事の質問は使用している開発環境のスレへ行け。 とかかれてますが?
>>287 MSDEV (Developer Studio) は VC++ を呼ぶが VC++ じゃない。
296 :
デフォルトの名無しさん :02/11/30 00:17
猫でもわかるプログラミングを見ても難しくてわからなかった 猫以下の超下等生物でもわかるようなC言語の入門サイト教えてください。
家の猫(マイケル)に、そのサイトを見せても マイケルにはC言語は理解出来なかったようだぞ
スレ違いですか? できることならこのスレでいいと思ってるんですが。
301 :
デフォルトの名無しさん :02/11/30 01:15
>>300 おお!ありがとうございます。
いろいろなサイトがあるようなので、これから見て回ります。
結局、 入門書レベルの質問はC言語質問所スレへ行け。 てのは誰も言わないのな。ホントに誰も。
>302 荒れまくってるようで使い物にならん。
今はもう、あまぐりスレになってるな。
306 :
デフォルトの名無しさん :02/11/30 12:54
>>292 じゃあ何がVC++なの?
コンパイラだけ?
307 :
デフォルトの名無しさん :02/11/30 13:00
質問っす。 ファイルを読み込み/書き込みの両方出来るモードで開いたときに 先頭から上書きしていって途中でファイルの終了にするにはどうすればいいの? (例) 元データ aaa bbb ccc 終了 変更後 aaa bbb 終了
環境によるが、POSIXなら ftruncate(ftell(fp));
>307 環境によるが、プログラムを実行させ、ハードディスクのアクセスランプが点灯す る瞬間に、パソコンの電源を抜く。
310 :
デフォルトの名無しさん :02/11/30 15:37
コンパイラをDLしてきた後の設定方法を教えてください。
>>310 コンパイラはこの世に一つしかないとでも思っているのか?
ついでにスレ違い。
313 :
デフォルトの名無しさん :02/11/30 17:33
_outp _inp を使って内部スピーカーを鳴らすソースを教えてください。
>>313 そこまで知ってるなら逆にこっちに教えてくれ
>>313 Unix系OSだったらUnixUser読めばわかるのにね、といってみる
>>301 遅レスだが、参考書を一冊買った方がいい。
>>314 putchar('\007');
間接的にoutポートも使うだろ。
>>317 out ポートは使ってるとは思うが、_outp を使ってるとは限らんぞ。
320 :
デフォルトの名無しさん :02/11/30 22:45
GNU diff のソースがよくわかりません。 解説してください。
GREPってなんやねん〜〜
>>321 上エプ 中エプ 下エプ
大文字を使った番外なオマエはさしずめビチアス海淵
324 :
デフォルトの名無しさん :02/12/01 00:14
325 :
デフォルトの名無しさん :02/12/01 00:17
何を偉そうに
326 :
デフォルトの名無しさん :02/12/01 00:31
GNU のソースって、やたら面倒だよね。
「GNUの」と一括りにできる程読んでるのかと小一時間。
>>327 根本のアルゴリズムやルーチンだけでなく、
統一されたインタフェースやエラー処理、不正入力処理、等の方が随分長いからね。
コアだけ抜き出すとかなり短い。
331 :
デフォルトの名無しさん :02/12/01 01:53
int read(int *ip){ scanf("%d",ip); return *ip; } insert( &g[vect], read(&val), read(&ch) ); 問題点は何かと聞かれましたが,上の関数では問題点はなさそうです。 下の関数は,実行する時の動作がおかしいと言うことだろうとは思うのですが, readを呼び出して,戻り値を引数として渡すから大丈夫だと思うのですが, どこが問題点なのでしょうか?
>>331 #include <stdio.h>
int read(int *ip){
scanf("%d",ip);
return *ip;
}
int main(void) {
int a, b;
printf( "%d %d\n", read(&a), read(&b) );
return 0;
}
このプログラムを動かして
100 200
を入力したときの出力はどうなるでしょう?
100 200がでたが・・・ VC++とCマシーンで
Σ(゚д゚lll)ガーン
>>332 gcc 2.95.3, glibc 2.2.4では
200 100
scanfの呼び出しが,引数評価の後にくるかもしれないってこと?
あ,ごめん。 200 100だった・・・ なぜ?
関数の引数の評価順序は規定されていない。
int main(void) { char **s1=("ABC\0""DEF\0""GHI\0" "JKM\0" "NLO\0""PQR\0""STU\0""VWX\0""YZ\0"); int i; int j; ++s1; printf("%s",s1); return 0; } char **s1=("ABC\0""DEF\0""GHI\0""JKM\0" "NLO\0""PQR\0""STU\0""VWX\0""YZ\0"); で、文字リテラルの多次元配列を実現しようとしました。 でも、こんな警告でる 間接参照のレベルが 'char ** ' と 'char [36]' で異なっています。 また、別の見方をすると *s1[]={"ABC","DEF","HIJ","..","YZ"}; 公書いたら↑のように宣言せねばならない。 だけど、こう書くと文字リテラルではなくなる。
成り立ってる理由はchar *s1=("ABC\0""DEF\0""GHI\0" "JKM\0""NLO\0""PQR\0""STU\0""VWX\0""YZ\0"); こう宣言して、++s1;すると一文字づつしかアクセス できない。 だが、上記のようにchar **s1="etc"; とすると++s1;は、リテラル単位でアクセスする。 すなわち、僕が考えた形は成り立ってるのだ。 じゃあ、いったいなんで警告されるのだ。
キティガイデタ━━━━━━(゚∀゚)━━━━━━ !!!!!
signal()とかでタイマーで再帰的に呼び出す処理をさせる場合、親スレッドと子スレッド がいて、子スレッドの方でこのsignalでタイマーをセットして処理させることは可能ですか?
>>346 落ち着け。
signalはタイマーをセットしないし(たぶんalarmのことか?)、
タイマーは再帰的になにかを呼び出したりもしない。
ちゃんと説明して。
>>343-344 最初に、何がやりたいのを書け。
char s1[][4]={"ABC","DEF","GHI"..."YS"};
char *p=(char*)&s1;
これで済む話か?
> ++s1;は、リテラル単位でアクセスする この間違った思い込みが元凶か。
誰か 350 を翻訳してくれ。
Warning: illegal pointer combination (param) ってエラーが出るんですが何を直せばいいんでしょうか。
346です。すみません。説明が混乱してました。
>>347 OSはLinuxなのですが、例えば signalでSIGALRMでコールバック関数
を設定してsetitimerである時間待ってから実行させる処理を再帰的に繰り返
すとします。
通常、タイマー処理(といういいかたでいいのかな)を単一スレッド内で行い
たい場合の一つの方法だと思うのですが、これを子スレッド内で
同じようにできるのでしょうか?(子スレッド内でsignal/setitimerする)
その場合、その子スレッドが終了した時にそのタイマー処理も終了するの
でしょうか?といった事が質問したかったのですが。
>>354 pthreadではsignalはメインスレッドが受けると思ったが。
それは分かるんですが・・確かに2つのスレに聞いたけど。。
うあ、714とかいって恥ずかしい。すみませんでした。
>>358 マルチポストが何故いけないか調べてこい。
調べた結果マルチポストはかまわないということが分かった
結果的にマルチ
363 :
クレアラ汁 :02/12/01 21:04
質問です:1kΩの抵抗に10vの電圧をかけ、流れる電流を20回計測した結果を 処理しその平均を求めるプログラムを作成してください。ただし許容差は±5%で、 電圧源の出力電圧の誤差は最大で±10%であるとする。 これらのパラメータから理論上ありえない計測値がでたら、入力データの番号と 「計測値が不正」のメッセージを出し、その回の計測は無視する。・・・・是非教えて下さい
このスレとC言語質問所スレってどう違うんですか?
許容誤差のことであろう。
>>366 ただいま電気科だがワカラン。まあ、それがわかれば簡単だすな。
> プログラムを作成してください (・∀・)カエレ!
>>367 そうか?
他にも解決しなきゃいけない問題があるんじゃないか?
「電圧をかけ」「計測」「理論上ありえない計測値」
つーか、思いっ切り環境依存の話じゃないか? おまいら、対応は 「未定義」 でおながいします。
371 :
デフォルトの名無しさん :02/12/01 22:25
電源:10v±1v 抵抗:1kΩ 電流:電源/抵抗=10±1mA 許容差:±5% よって、9mA*±5%〜11mA±5%となり、 8.55mAから11.55mAの範囲で正常とみなす。
372 :
クレアラ汁 :02/12/01 22:26
電圧をかけ:電源を入れる。 許容誤差のことは気にしないで下さい。 よろしくお願いします
許容差って平均とったときの許容誤差のことじゃなかったの?
374 :
デフォルトの名無しさん :02/12/01 22:33
すれ違いなのでその話は雑談スレにでも行ったほうがいい。
375 :
デフォルトの名無しさん :02/12/01 23:21
電源:10v±1v 抵抗:1kΩ 電流:電源/抵抗=10±1mA 許容差:±5% よって、9mA*±5%〜11mA±5%となり、 8.55mAから11.55mAの範囲で正常とみなす。
376 :
デフォルトの名無しさん :02/12/01 23:51
>8.55mAから11.55mAの範囲で正常とみなす。 実験して取ったデータが入力された時に、 上の、正常値にならなければ、 「再度入力して下さい。許容誤差範囲外です」 とか書けば良い。
「計測値が不正」のメッセージを出し って書いてあったな。すまん。
379 :
デフォルトの名無しさん :02/12/02 01:53
inline void a() { //作業 } と言う関数を,ヘッダーファイルの中で, inline void a(); void a(); のふたつで,プロトタイプ宣言してみましたが,未解決ですと表示されてコンパイルできませんでした。 そこで,関数の実体の方のinlineを取ったらコンパイルできました。 inline関数の時は,どうすればコンパイルできるようになるのでしょうか? win98 VC++6.0 です
低レベルだとは思いますがご教授ください visualc++を使ったプログラミングの課題をやるのに (まだDOS窓しか使ってないので、)文字に色をつける等ができる 関数が使えるヘッダファイル(拡張子がhのもの)を学校側からもらってるんですが /*マクロ定義*/ #define KEY_UP (0x48) #define KEY_DOWN (0x50) こういったことが書いてあって これを利用すると、キーボードの↑を押した時に 何か処理をさせるみたいなことができるらしいんですが 使い方がわかりません、どう使うんでしょうか?
スレ違いやん?
いつから宿題丸投げスレになったんだ?
>>382 一応ポインタ変数とか構造体までやってて
操作がまだscanfで何か入力しかできないので、入力してEnter押す
では味気ないからってことで使えるようになってるだけです
課題そのものはデーターベースみたいのを作ることで全然丸投げではないです
>>383 スレタイ分かってるか?
「C言語のことは俺に聞け」
つまり裏を返せば
「C言語と関係ないことは俺に聞くな」
ってこった。分かるな?
>>384 C言語と関係ないなら何と関係あるんですか?
386 :
デフォルトの名無しさん :02/12/02 02:51
>>385 タダの煽りなので気にしないほうがよろし。
>>386 いえ、知識がないからホントにわからないんですが…
ウィンドウプロシージャって知ってる?
>>387 (゚Д゚)ハァ?おまえが授業中に情報聞き逃すかなんだしたんだろ?
>>380 だけで使い方分かるやつなんていねーよ。
390 :
デフォルトの名無しさん :02/12/02 02:56
>>389 いえ、その使い方(全部の内容)は説明してないんです
プログラミングの経験がある人が何人か使っててできることがわかっただけで
>>392 宿題丸投げは宿題スレへ。
WindowsでのC/C++プログラミングは、VC++スレとかで聞いてみれば?
394 :
ぬるグラマー(初心者) :02/12/02 03:20
>>380 さんのはこんな感でできそうな感じですけど。
もっと良い方法知ってる人居たら教えて。
#include <stdio.h>
#include <conio.h>
/*マクロ定義*/
#define KEY_UP (0x48)
#define KEY_DOWN (0x50)
int main(void)
{
int c;
if(getch()==0){
c = getch();
if(c == KEY_UP)printf("KEY_UP!");
if(c== KEY_DOWN)printf("KEY_DOWN!");
}
getch();
return 0;
}
395 :
ぬるグラマー(初心者) :02/12/02 03:21
396 :
デフォルトの名無しさん :02/12/02 04:34
>>394 はっきりいってスレ違い。
>1 GUIなどの標準Cではできない事の質問は使用している開発環境のスレへ行け。
400 :
デフォルトの名無しさん :02/12/02 12:24
getsとgetline、どちらを使うほうがカッコイイ?
>>400 getlineなんてC言語の標準ライブラリにはない。
getlineだろ、当然
UNIXでネットワークプログラミングをしているんですが、 サーバがlistenで待って、クライアントがconnectで接続。 その後、クライアントがshutdownすると、 「パイプが切断されました」と言って、サーバも終了してしまいます。 どうすればクライアントの切断(予期しない切断も含める)を 正常処理できるでしょうか? お願いします。
EPIPEをトラップ
SIGPIPEをトラップ
406 :
デフォルトの名無しさん :02/12/02 13:08
POSIXってなんですか?UNIXの仲間ですか?
すまん、404は間違い。
>>406 板違いっぽいが、UNIXベースのOSの規格。
>>405 さん
ありがとうございます!やってみます!
>>406 POSIX: Portable Operating System Interface
OSのAPIの国際標準規格。
>>408 Unixに限らない。Windows NT/2000もPOSIXに準拠してる。
414 :
デフォルトの名無しさん :02/12/02 13:37
どうしてgetchはWin32s およびWin32 GUI のアプリケーションでは使用 してはいけないのですか?
>>414 これもかなりスレ違いだが、コンソールを持ってないからじゃないか?
>>416 NT/2000がUNIXベースのOSとは初めて聞いた。
Java や C# は C++ をベースにしているが、C++ ではない。 それと同レベルの話。
>>420 Microsoft の言を信用するなら正しい。
一般には、完全準拠ではないと言われている。
漏れは確かめていないので分からない。
423 :
デフォルトの名無しさん :02/12/02 19:01
激しくボッキ!!
micro kernel
>>423 >408は、POSIXがUNIXをベースにして制定されたということ。
NTが準拠してるかどうかは別問題で、>416はそのへんを誤読している。
でもNTってmachベースって話じゃなかったっけ。
427 :
デフォルトの名無しさん :02/12/02 19:28
符号なし整数を使いたいのですが、 unsigned int i; と宣言しても、符号付き整数になってしまいます。 どうやったら符号なし整数を使うことができるのでしょう?
>>427 つーか、どうやって符号付き整数になったかどうかわかったの?
429 :
デフォルトの名無しさん :02/12/02 19:39
符号付整数がとれる最大の値に1足すと、マイナスの値 になってしまうのです。
>>429 いや、だから・・・どうやってマイナスだとわかったのかと。
もしかしてprintf("%d", i); で表示してたってオチじゃないだろうな。
>>426 マイクロカーネルと言う意味ではmach的ともいえるけど
VMSを設計したデビッドカトラーをVAXから引き抜いて作らせたから
内部構成はVMSに似ているらしい。
(VMSを一文字ずらすとWNTになるというのはヨタ話くさいと思うけど。)
POSIXは準拠でないと一時期米政府機関がシステムを納入させてくれなかった関係で
形だけ最低限対応したというのが実態にちかいんじゃなかろか。
432 :
デフォルトの名無しさん :02/12/02 19:46
そのオチでございます。 printf("%d", i); だとあかんのですか。。。それは知りませんでした。 で、どうやって表示すればいいのでしょうか?
>>432 printf("%u", i); デス。
434 :
デフォルトの名無しさん :02/12/02 19:53
>>433 ありがとうございました!
(しかし、それは知らなかった。。。)
>>431 実態はたぶんそんなとこだろうが、それ以前に使いようがない。
Interixってんがそうなのかなぁ。
C言語はどうやって作ったんですか? あとB言語ってのがあったそうですけど難しいんッスか?
処理系や解説書の入手自体難しい。
ってか入手できるの?
439 :
デフォルトの名無しさん :02/12/02 21:30
無理なんじゃねーのB言語の発展版がC
Bのそのまた前の BCPLの本ならまだ売ってるが。共立出版。
VMSをずらしたらWNTってのは本当だろう。 VMSの設計者David Cutlerが Win NTも設計したんだから。
「Cの次はP。その次はLである。」(DやEではない!!) 「C言語はそれ自身でかかれた言語である」
446 :
デフォルトの名無しさん :02/12/03 15:42
変な質問なんですけど・・・。 Cで変数やら配列をたくさん使いすぎると、 変数や配列の中身が変わったりしませんか?
>>446 メモリリークでも起こしてるだけじゃないのか?
>>447 初心者なのでメモリリークの意味もあまりよくわからないです。
mallocを一切使わずにプログラムを書いているので、
その辺が原因なんじゃないかと踏んでいるんですが・・・。
とりあえず、a[50]→a[100]とかにして宣言し直したら、
配列の中身は変わらなくなりました。
Cってそういうとこ原因わかりにくいからなぁ。
>>448 配列の添え字外をアクセスしているに100カノッサ。
>>445 の脳ミソをオーバーフローしてるに1000pF。
>>450 それはないはずです。
今まで普通に動いていたのに、配列を増やしたら急におかしくなった。
その配列はプログラムの最初以外はアクセスしないのに、
最後で出力すると中身が変わっていた。
でも、使うギリギリまでしか添字の範囲を取っていなかった。
>>453 環境はよく分かりません。スイマセン。
プログラムは600行ぐらいあるのでちょっと・・・。
外部変数としての配列は20種ぐらいです。
配列の種類増やしたぐらいでもし中身が書き変わってしまうとすれば、 俺は職を失うことになる(((( ;゚Д゚))))ガクガクブルブル
初期化ミスに1.2ml
>>454 関係ないとこぶち壊してたのが、配列広げたせいでそこまでカバーしちまった
とかかも。
いずれにせよ、コンパイラのバグよりも自分の環境も分からない香具師のバグ
のほうに3000nxt。
458 :
デフォルトの名無しさん :02/12/03 16:40
文字列操作とかしていない? for(i=0;i<=N;i++) とかのNの部分とか変更ミスってない?
Borland C++Builderとかなら、CodeGuardかければ一発でわかるんだけどな。
>>457 スイマセン。
>>458 文字列は全く使っていません。
for文の中身もほとんど、for(i=0;i<N;i++) で統一しているので。
Nの部分もすべてマクロ定義にしています。
>459 あれだ、BoundsCheckerってば、体験版あったはず
>>446 > Cで変数やら配列をたくさん使いすぎると、
> 変数や配列の中身が変わったりしませんか?
ansi準拠な処理系かつansi準拠ななソースだと仮定すれば
「そ ん な こ と は 絶 対 に 起 こ ら な い」
よって処理系がバクっているか君のソースがバグっている
可能性から言うと君のソースがバグっている可能性が高い
>>460 すごくまさかとは思うが・・・・
LSI-C86試食版のような、16bitコンパイラ使ってないだろな。それで
配列が1セグメントを超えてしまったような。今時ないよな。
とりあえず直ったのでもう大丈夫です。 回答していただいた皆さん、ありがとうございました。
>463 セグメント超えるような配列は、 コンパイラがさじ投げる気がするけど、、、
>>464 いったいどう直したのか聞いてみたいのは漏れだけか?
>>466 変数増やしたりしてたらメモリリークが気づかない箇所にうつっただけだろ。
>>467 バグが隠れただけだってことは間違いないだろうが、malloc()は使ってないっ
つてるから(信用するなら)メモリリークじゃないだろう。つーかメモリリーク
で関係ない所を壊すって症状は、あまり聞いたことないんだが。
スタックオーバーフローだろ。
470 :
デフォルトの名無しさん :02/12/03 18:48
テスト
>>469 446が再帰なんて使ってるとも思えんのだが。
まぁうだうだいってもソース晒す気がないのなら無駄だがな。
>>471 スタックオーバーフローの要因なんぞ再帰以外にもあるがな。
>>446 何度も連続してコンパイルして居ると、*.objが、前のデータを流用して、
容量増やした時に、配列の先頭を変えずに、確保しようとして、ほかの配列で
使って居る所を、上書きしたりする事もあるから、*.objを消してから
コンパイルした方が良い。
>>473 そりゃコンパイラかリンカのバグってこと?
つーか処理系は何
>>473 ネタか ?
インクりメンタルコンパイルかなんかでコンパイラがバグってたらあるかも知れんが、俺は聞いたことない。
ネタじゃないなら、ソースキボン。
>>473 VC6の統合開発環境でよく起こるな。
あのバカメイクのせいで。
477 :
デフォルトの名無しさん :02/12/04 01:57
構造体のポインタにつぃて聞きたいのです。 配列でない要素をポインタで扱う時 data->a=100; と言う風にできるんですが配列の場合はどうすればいいんでしょうか? data->b[12]=100; とかしたいんだけど
> data->b[12]=100; > とかしたいんだけど 本当にそうしたいのであればそのコードでOKなはずだが。 data[12]->b = 100 とか data[12].b = 100 とかしたいのではないかと推測。
>>477 mallocつかわないといけないらしい。
480 :
デフォルトの名無しさん :02/12/04 05:36
>>477 struct Test
{
int a;
int b[20];
};
int main(void)
{
Test* data = (Test*)malloc(10);
data->a = 10;
data->b[12]= 10;
return 0;
}
こんな感じ?
>>480 せめて
Test* data = (Test*)malloc(sizeof(Test));
とすべきでは?
失礼!そうだね。
クソどもの集りだな struct Test *data = (struct Test *)malloc( sizeof(struct Test) ); だろーがヴォケが。
485 :
デフォルトの名無しさん :02/12/04 06:05
struct A { char str[ 100 ]; }; struct B { char * str; }; void main() { struct A a; struct B b; char src[] = "ABCDE"; int srclen = strlen( src ) + 1; memcpy( a.str, src, srclen ); printf( "A string is \"%s\".\n", a.str ); b.str = (char *)malloc( srclen ); memcpy( b.str, src, srclen ); printf( "B string is \"%s\".\n", b.str ); free( b.str ); }
477さん。 見たら直しといて下さいね。
>>486 それワカル
struct hoge{
hoge* p;
};
としたらえらい怒られた。
C++ で struct ってそんな使う?
interface
>>486 そうです。C++だともはやstructなんてキーワードは型キャストやsizeofに
使わないので、完全に癖になっています。
typedef struct hoge hoge; struct hoge { hoge *giko; };
他の言語でどうのって言い訳カコワルイだけ #define begin { と一緒
拡張子を".c"にしてg++でなくてgccでコンパイルしてから投稿すればいいという罠。
>>493 それはそれで痛いが、それはわかっていてやっているので違う問題だと思われ。
496 :
初心者です。 :02/12/04 20:19
#include<stdio.h> void keisan1(int a,int b); void keisan2(int *a,int *b); int main(void) { int kazu1,ans1; int *kazu2,*ans2; kazu1=10; ans1=9999; kazu2=&kazu1; ans2=&ans1; keisan1(kazu1,ans1); printf("%d\n",ans1); keisan2(kazu2,ans2); printf("%d\n",*ans2); return 0; } void keisan1(int a,int b) { b=a*100; } void keisan2(int *a,int *b) { *b=*(a)*100; } このプログラムの実行結果は 9999 1000 になります。 9999になるのは、keisan1の関数がvoidだからということでよろしいのでしょうか。 それと、呼び出しがkeisan(*kazu2,*ans2);ではなく keisan2(kazu2,ans2); なのはなぜですか?
>9999になるのは、keisan1の関数がvoidだからということでよろしいのでしょうか。 よろしくないです。
498 :
デフォルトの名無しさん :02/12/04 20:30
keisan1の方は値のみ、keisan2の方は値が 格納されているアドレスが渡されている。
499 :
初心者です。 :02/12/04 20:49
void keisan1(int a,int b); int main(void) { int kazu1,ans1; kazu1=10; ans1=9999; keisan1(kazu1,ans1); printf("%d\n",ans1); return 0; } void keisan1(int a,int b) { b=a*100; } このプログラムの間違いはどこなのですか?
正しい。
501 :
デフォルトの名無しさん :02/12/04 20:56
void keisan1(int a, int* b) { *b = a * 100; } int main(void) { int kazu1 = 10; int ans1 = 9999; keisan1(kazu1, &ans1); printf("%d\n", ans1); return 0; } このコードを見て自分で考えるべし!!
502 :
初心者です。 :02/12/04 20:57
>>499 のプログラムはなぜ実行結果が1000にならないのですか?(半泣)
>502 どんなCの本にでも載っていることだとおもうが。
504 :
デフォルトの名無しさん :02/12/04 21:07
>>502 void keisan1(int a, int b)の
int a 10が格納された変数
int b 9999が格納された変数
void keisan1(int a, int* b)の
int a 10が格納された変数
int* b 呼び出し元のans1変数のアドレスが格納されている変数
呼び出し元の変数の中身を変えるには変えたい変数のアドレスが必要
よって呼び出し側に中身を変えたい変数のアドレスを渡す
説明が下手でごめん・・・
505 :
初心者です。 :02/12/04 21:07
>>501 はい。
1.まず、int型変数kazu1とans1が作られます。
2.kazu1に整数10、ans1に整数9999が入りました。
3.keisan1関数に10とans1のアドレスが飛びます。
4.keisan1関数で10×100、つまり1000が*bに格納されます。
5.keisan1関数から、10とans1のアドレスが帰ってきました。
6.ans1の中身は1000なので、printfの実行結果は1000になります。
あってますか?
>>505 > 5.keisan1関数から、10とans1のアドレスが帰ってきました。
アドレスなんかどこで返してるか?
507 :
デフォルトの名無しさん :02/12/04 21:11
OK!!
508 :
デフォルトの名無しさん :02/12/04 21:13
509 :
初心者です。 :02/12/04 21:17
じゃあ何が帰ってきてますか?
>>476 nmake.exe のせいと言うことか ?
nmake.exe のバグで、
>>473 みたいなことするのは難しいと思うぞ。
それとも、お前のバカメイクと言う奴は *.obj の中身を触ってるのか ?
511 :
デフォルトの名無しさん :02/12/04 21:21
>>509 帰るというニュアンスがおかしい。
keisan1関数に値を渡しているだけ。
「渡す」より「教えている」の方が分かりやすいかな?
513 :
初心者です。 :02/12/04 21:24
>>511 keisan1関数はmainになにも値を返していない?
何も返さないから、voidっていうことにしたいんですね :-)
>>513 VBと混同していない?
C言語では引数で「返す」ことはできない。
>>513 そう。
返すとは、
int keisan1(int a)
{
return a*100;
}
のようにする事。
>>515 引数で返すことができないと言い切ってしまうと間違いになるが。
518 :
初心者です。 :02/12/04 21:28
やはり誤解していました。 値を返すにはreturnが必要なのですね!
値を二つ返したい場合は、 return (a,b)ですか?
いや、値を複数返すのは不可能だから、 引数で*を使用してやるしかない。
さてポインタの話になるわけだが。
523 :
デフォルトの名無しさん :02/12/04 21:33
>>520 予想通りでしたか?
最初はみんな考えそうなことですね。
なるほど〜。だからポインタが必要になるわけですね。 ポインタだと、変数の中身を関数で変更してしまうから値を返す必要がないというわけですね。
さてここからポインタ厨の講釈が始まるわけだが。
ローマ字を日本語に直すプログラムを作ろうと思うんだけども。 最初は半角カタカナでやったほうがいいよえね? 全角って2バイト?
とりあえずこの初心者は話にならんから、 K&Rでも真っ当に読み直せ。以上。
528 :
デフォルトの名無しさん :02/12/04 21:38
ああ、わかった。うれしい! みなさま、感謝です! 試験まであと4日、がんばります!
あ。なんでgetchar使うときはint型の変数使うんでつか?
531 :
デフォルトの名無しさん :02/12/04 21:41
>>530 charだと0xffとEOFの区別がつかないから。
>>530 初心者は素直にFAQよんどれ。なんども厨房な質問すんな。
>>529 他人事ながら心配になってきた。もしかしてネタ?
>>531 はい!ありがとうございます!
あと4日でポインタ配列まではマスターしなければならないので、
また教えてくださいね。
>>534 日曜日に情報処理活用能力検定2級受けてきます。
>>536 だからFAQ読めって。お前は自分の都合の悪いことは無視して、
質問することしかできんのか?
…。 これ以上どう具体的にしろと……。
つーか、
>>1 に
>入門書レベルの質問はC言語質問所スレへ行け。
って書いてあんのにさ。きっちり誘導すれば厨房初心者は向こう
行ったろうに。気まぐれで答えてやったりするから収拾つかなくなる。
542 :
デフォルトの名無しさん :02/12/04 21:53
>>536 16進数 0xff
10進数 255
2進数 11111111
さてJPSはまたしても無視するわけだが。
544 :
質問に答えてきた者 :02/12/04 21:55
255?それがなにか意味あるの? unsigned charだったら表現できるしょ?
>>546 正直言って「C言語のことは俺に聞け」とあればネタスレだと思ってしまう。
でもあっちは荒らされているのでこっちにも書きたくなる。
やはりJPSは無視し続ける訳だが。氏ね。
>>548 あっちは
>まずは腕立て伏せ100回。
>話はそれからだ。
だもんなあ〜。
だれか教えてくれええええ 入門書に書いてないYO! K&Rに任意の可能なcharってあるけど charだと256種類表現できるわけでしょ? そこには英数字いれても十分空きがあるわけだから 0xffはcharで表現できるんでないの?
>>552 ってことはcharで256個の文字を保持してるってこと?
ANSCIIのコード表だと127個しかないけどもどゆこと?
555 :
晒しage :02/12/04 22:10
ANSCII
>charで256個の文字を保持してる 重症だな
>>551 getchar() の入力が必ずキーボードであると想定するな。
いま色々みてたら、EOFの値は処理系依存で、大抵-1だけど charが符号付かどうかも処理系依存だから、符号なしの場合は EOFを認識できないからintを使うって書いてたけど、これであってんの?
>>557 身近なところだとファイルからリダイレクトってのがあるな。
JPS ってさ、出てきた時は、正直、こいつちょっと頭悪いんじゃないか って思ってたけどさ。そうじゃなかったよ。 ものすごく頭悪い。
561 :
デフォルトの名無しさん :02/12/04 22:17
まあ、色々な疑問を持つのは良いことだけど・・・
ていうかchar型で256種類もどんな文字あるの?
>>560 お前も昔は同じようなもんだったんだろ?プ
564 :
ためしに誘導してみるテスト :02/12/04 22:20
>>558 何のページをみてるんだか知らんけど、その説明じゃ大嘘だ。
(よりによってなんでまたそんな説明のページを…)
charが符号つきだろうが符号なしだろうが関係ない。
566 :
デフォルトの名無しさん :02/12/04 22:22
カレー
>>564 あっちでは逆にこっちに誘導しているみたいだけど
どうなってんの?
>>565 この説明が一理あるのも分かるけど。
EOFって文字じゃないわけでしょ?ただの整数値だよね?
それだったらEOFもchar型の文字にしてって事はなんでしないの?
getcharによって入力された文字がAだったとします。 しかし変数に記憶されるデータは65という数値データになるのです。 この65という数値はAに対応する「文字コード」になっています。 getcharは取得した文字を文字コードに変換して変数に記憶させるため、 int型を利用します。 この説明で正しい?
>>568 じゃあお前のプログラムが読むファイルに 0xff が出てきたら
そこがファイルの終端ってことにしろよ。絶対しろよ。
>>568-569 557 や 559 は完全無視か?
getchar() の正常値は、char が取りうる全ての値。
そのどれかを EOF にすると、正常値なのか EOF なのか判断できなくなる。
>>568 まあchar型を8bitと仮定しよう
そうするとchar型のとり得る値には256通りあるわけだ。
よって必然的にgetchar()の返す値も最低256通り必要になる。
そしてそれに加えてEOFという特殊な印を1種類返す必要があるわけだ。
そうするとgethcar()は最低257通りの値を返さないといけないことになる。
つまりchar型では不可能なんだよ。分かる?
JPS に一言。 getchar() が返すのが文字であって、数値ではないと思っているのなら間違っているから改めてくれ。
574 :
デフォルトの名無しさん :02/12/04 22:30
575 :
デフォルトの名無しさん :02/12/04 22:30
ああ!わかりますた。256種類使うかどうかに関係ないんでつね。 0〜255の値を返すから、それ以外の整数地をEOFにするんでつね?
>572 ふと思ったけど、sizeof(char) == sizeof(int)な環境はどうなるんだろう...?
>>576 0〜255かどうかは処理系依存だが
まぁだいたい理解できたみたいだからOK
ありがとございました。
>>577 色々調べてたらこんなのがありますた。
getchar は文字を返す関数なのだから、 char の変数に戻り値を受けた。なぜこれが非難の的になるのか。
A
あまり難しく考えることはありません。マニュアルを見てください。どのマニュアルにも、 getchar() の型は int と書かれているし、ANSI Cではそのように定義されています。従って、 getchar() の戻り値は int の変数で受けるのです。
getchar() は、実際、0〜255の値と、 EOF という値(おそらく-1)の、合計257通りの値を戻します。これは char の範囲では受け切れません。あえて char の変数で受けるなら、 EOF と255は区別できないことになります。
「私の処理したいファイルの中には255などという文字コードは使われていないから char で受けても実害はない」という主張を見たことがありますが、 int で受ければさらに実害はないはずです。
580 :
デフォルトの名無しさん :02/12/04 22:36
つまり色々調べずに質問してた、と。
>580 まあ調べもしないヴァカな質問にも、答える香具師がいるからな。
調べてもわからないんです。 自分で確認しながらじゃないと、理解できないんで。 ここでみんなと語らい、確かめてますた。
ふと思ったけど、もしね、char型がgetchatのためにあったとしたら、 0xffをEOFとすれば、int使わなくてもいいんだよね?
ISO/IEC 9899:1999 7.19.7.6 The getchar function Synopsis 1 #include <stdio.h> int getchar(void); Description 2 The getchar function is equivalent to getc with the argument stdin. Returns 3 The getchar function returns the next character from the input stream pointed to by stdin. If the stream is at end-of-file, the end-of-file indicator for the stream is set and getchar returns EOF. If a read error occurs, the error indicator for the stream is set and getchar returns EOF. getchar() が返す正常値については何も記述がない。
586 :
デフォルトの名無しさん :02/12/04 22:43
>>584 わかるのか、すごいな。
漏れは分からなかったぞ。
>>585 getchar()が返す正常値ってchar型の文字のコードでないの?
>>577 getchar()が返す正常値は処理系のchar型の範囲じゃないのではないか。
The byte input/output functions ? those functions described in this subclause that
perform input/output: fgetc, fgets, fprintf, fputc, fputs, fread,
fscanf, fwrite, getc, getchar, gets, printf, putc, putchar, puts,
scanf, ungetc, vfprintf, vfscanf, vprintf, and vscanf.
ちなみに、EBCDIC 942 では、~ は 0xFF だな。
>>589 だから何度も文字とは限らんと言っているだろう。
大体文字コード体系も限定されとらん。
0〜255まですべて文字で使うコード体系の環境で動くプログラムをC言語で組むかもしれないだろ。
ちなみに、Wingdings では 0xFF は Windows ロゴだな。 ASCII 系の環境でも、あるコードが ASCII に定められていないからと言って 文字として使われていないとは思わない方がいい。
>>593 591みたいにね。文字とは限らんって他にはたとえば何があるのかな?
>>585 > getchar() が返す正常値については何も記述がない。
それは...
> The getchar function is equivalent to getc with the argument stdin.
だから記述がないだけ。getchar() → getc() → fgetc() にある。
If the end-of-file indicator for the input stream pointed to by stream is not set and a
next character is present, the fgetc function obtains that character as an unsigned
char converted to an int and advances the associated file position indicator for the
stream (if defined).
>>595 111111111111111100000000000000111111
みたいな文章でなくて何かのデータを
getchar() で読み込むことだってあるのよ。
>>597 ああ。それがさっき言ってたファイルの話か。
ベンキョウになりますた。
>>597 それ文字やん。誰も「文章」云々は議論しとらん。話をややこしくするなよ。
>>598 何の勉強になったんだ ?
要は、バイナリデータを getchar() で読むこともあるってこと。あまりお勧めではないけどね。
>>600 >>597 の1111・・・ってのはそういう文字列のことを言っているわけではないと思うんだが・・・
本当に分かったのか…?
バイナリデータを読み込むのに使うんだなって勉強になりますた。
>>600 >要は、バイナリデータを getchar() で読むこともあるってこと。あまりお勧めではないけどね。
なんで?フツーに大丈夫だと思うが。お勧めでない理由は?根拠は?
>>602 わかったYO!なんとなくだけど。
バイナリデータだったらそのまま0と1の羅列でしょ?
8bitをフルに使う可能性は120%あるってことか!
漏れも、fread() を使って 1 文字ずつ読むとか一気に読んでバッファリングして プログラムを複雑にしたりするくらいなら、getchar() や fgetc() のがいいと思う。 元々 FILE はバッファを持っているし。
ブランクって空白文字のこと? タブとかいれないで。いわゆるスペースか?
定義による
すっとこどっこい
厨房だった俺はオヤジの洗濯屋けんちゃんを発見して サルの様に抜きまくっていたのはいいんだが、 なぜか自己嫌悪に駆られてビデオを捨ててしまったのだよ(オヤジのなのに)。 あれから15年近く経つけど、オヤジは何も言ってこない。 でもひょっとしてオヤジも大切にしてたのかも…と思うと、やっぱり返してあげたいんだよね。
611 :
デフォルトの名無しさん :02/12/05 00:03
ええ話あげ
すれ違いサゲ
613 :
デフォルトの名無しさん :02/12/05 00:27
ビデオデッキを捨てたのか・・・
泣けるか!ヴォケ。
質問。 今、VC6 でこんなコードが通るのを確認してしまった。 int $ = 123; printf("%d\n", $); 変数名に $ は OKなの??
617 :
デフォルトの名無しさん :02/12/05 00:43
>>616 漏れも通った
printf("%d\n", $_);
Perlっぽいな
VCで通るからといって規格上正しいコードと思ったら大間違い。
VC++的には正しいコードなんだろ。
規格上正しいコードだからといって メジャーなコンパイラで通ると思ったら大間違い。
>>617 「漏れも」 じゃなくてコンパイラを書いてくれ。
gcc-2.95.1 で通った。
BCC 5.5.1 では通らなかった。
まあ、C では $ はメタ文字じゃないから、通ってしまうのもわからんでもないが・・・。
template<typename $> hoge(){$ $$} よし、今日からこうしよう。 Tはもう古い。通はこれ。
しかし規格にも MSDN にも、識別子に $ が使えるなんてちっとも書いてないんだよなあ・・・。
std::string A$;
627 :
デフォルトの名無しさん :02/12/05 01:19
結論: $はperlっぽい。 $ は p e r l っ ぽ い 。
>626はBASICっぽいがな。
629 :
デフォルトの名無しさん :02/12/05 01:27
>>616 というか、どういう経緯でそういうコードを書こうと思ったのか知りたい。
そういえば、昔、知り合いが _ だけの変数を使っていて、間違いじゃないけど、
ちょっとショックを受けた。
631 :
デフォルトの名無しさん :02/12/05 01:30
int _; _= --_ - _--;
モールス信号みたいね。
_ は Splus だヴぁー?(・┏┓・)
636 :
デフォルトの名無しさん :02/12/05 01:37
BrainFacker
日本語変数名使用可能なC処理系ってあったよね? int =2,(・,┏,┓,・),; /* 全角スペースは使用できるだろうか? */ char *ヴァー="(・┏┓・)"; printf("%d\n", );
GCC.EXE (GCC) 3.2 (mingw special 20020817-1) でも通りました。>$
>>627 perlなら$_を使え!
$_ = 2;
main(){
printf("%d\n",$_);
}
>>640 それだ!(gcc 3.2 on Cygwin)
$_=1,*$=&$_,$1;
main() {
*$='#'%~!&$1;//
printf("%d\n",*$);
}
_;main(){printf("%d\n", (6^_^9) );}
644 :
デフォルトの名無しさん :02/12/05 02:11
C言語始めたいんだけど、お勧めの参考書あります?
645 :
デフォルトの名無しさん :02/12/05 02:16
/* Hello world */ #include <stdio.h> int main(){ printf("Welcome to HellWorld!"); return 0; }
647 :
デフォルトの名無しさん :02/12/05 02:20
呪いは始まったとか書いてあったんですけど・・
pa_003_a はもういいでつ
$は規格が出来る前のコンパイラで使えた。 gccは互換性のため$を使えるようにしているが、オプション指定でエラーにすることも出来る。 ってことだったような。
わかった、こうだ!! double A = 12.345; char A$[] = "abcde";
ちょっと質問。 for(...) { for(...) { if(...) { 処理1; goto next_loop; } } 処理2; next_loop: ; } これをgotoもフラグも使わずに書ける? 関数を分けるとかも無しで。
ちなみに、ifや2番目のforの条件式の中身は、 その上のループカウンタに依存します。
setjmp...longjump...
そんな制御文作るやつの宿命だ > goto hell
>>653 こうですか?
for(...) {
jmp_buf mark;
if(setjump(mark) == 0) {
for(...) {
if(...) {
処理1;
longjmp(mark,1);
}
}
処理2;
}
}
>>652 for(...) {
for(...;式;...) {
if(...) {
処理1;
break;
}
}
if (!式) {
処理2;
}
}
式はフラグとみなすか?
処理1の中で式の値が変わるかも。
for(...) { for(...;;...) { if (!式) { 処理2; break; } if(...) { 処理1; break; } } }
さっさとbreak label;を仕様に盛り込め
662 :
デフォルトの名無しさん :02/12/05 21:15
bolandのコンパイラの設定の方法を優しく教えてくれるサイトはありませんか? なければ誰か教えてください
663 :
デフォルトの名無しさん :02/12/05 21:31
質問があります。 私は、C言語でDOS/VマシンのCOM1ポート(RS232C)を DOSモードで制御して外部機器へ命令したいと考えています。 しかし、ネットや本で調べたところVBなどで書くのが主流のようで プログラムの方法がわかません。 なんらかの情報でもよいので教えていただけませんか? よろしくお願いします。
664 :
デフォルトの名無しさん :02/12/05 21:34
プリプロセッサに対して、 #error "逝ってよし" みたいなことが出来ますが、 これをメッセージだけ表示するようにすることは できますか?
if((fp=fopen("a.txt","r"))==NULL) exit(-1); これで、exitをfflushにしてファイル操作をやめてプログラムを続行するのは駄目ですか?
>>665 何をfflushするんだよ。stdoutか?
意味のある処理が続行できるんなら続行しろよ。
そんな一行だけ見せられても、お前のプログラムの仕様なんて分からん。
>>667 いや、こういうのをよく見るんだけど、exitでは全てのファイルバッファをフラッシュするというから
そういうことをする必要があるのかなと思って…
そのまま続行したい場合は何もしなくていいのですか。
というか変なこと言ったみたいですね。スマソ
669 :
デフォルトの名無しさん :02/12/05 22:11
Pythonを基礎の基礎の基礎から始めたいんですが、本とかじゃなくてサイトで学習したいです。 オススメのサイトってありますか?
はいネタおもしろい〜
>>670 え?誰に言ってるの?俺?
全然ネタじゃないですが・・・
Pythonって駄目なんですか?
? 折れ? だとしたらもういいや、鬱だ寝よう
673 :
デフォルトの名無しさん :02/12/05 22:18
WindowsMEを使用しているのですが、 Cドライブのなかの「AUTOEXEC.BAT」にパスを書込めば完成なのでしょうか
・・・
ダメです。コンパイラ動きません。
>>1 も見ないようなクソ共に一体何を教えろというのだ
間違えてBAKのほうに書いていました。
bak all right. bak all right!
679 :
デフォルトの名無しさん :02/12/05 23:23
つい先日Cを始めたんです。 今勉強してるんですがどうしても for文、while文が理解できません。 どなたか教えていただけないでしょうか? あと、for文ってCを学ぶ上でそんなに重要なものなんですか? よろしくお願いします。
for(A;B;C)D; は A;label:if(B){D;C;goto label;} while(A)B; は label:if(A){B;goto label;}
>>679 なくてもプログラムは書ける
…が、絶対覚えたほうがいい。
書き直すとこうなる
for( i = 0; i < 5; i++ ) {....}
↓
i = 0;
while( i < 5 )
{
i++;
}
いろいろ自分なりにも勉強してるんですけど 難しいですね。 for(式1,式2,式3){...} 式1=初期化の式 式2=繰り返すかどうか調べる式 式3=変化のための式 こう書いてあるのを理解しようとしているのですが・・・。 高校一年生には難しいです。 それとも深く考えすぎですかね? あと、もう一つせっかくなので質問させていただきますが for文、while文はどちらも似た様なものなんですよね? ということはどちらか一つだけ覚えれば十分てことですか? よろしくお願いします。
>>679 for文はwhileぶんと似てるよね。たとえばさ
for(i = 0 ; i < MAX ; i++)
printf("%d",i);
っていうのは
int i = 0;
while(i < MAX)
{
printf("%d",i);
i++;
}
ってなるしょ?whileに+αしたのがforって感じかな。
この場合はforの方がすっきりしてみやすいけど、
whileの方がずっと見やすい事もある。初期化が不要だったり、ポインタ演算使うときとか。
だから両方覚えたほうがいいYO!
>似た様なもの...ということはどちらか一つだけ覚えれば十分 それ言ったらifとgotoでも十分だが最も意味的に 分かりやすいのを書くのが定石
exitの仮引数って意味はあるんですか? どんな値を渡しても、ちゃんと終了してくれるんでしょうか? あと、returnに1とか渡して、main関数を終わらせるのは、間違ってますか?
686 :
デフォルトの名無しさん :02/12/05 23:48
htmlファイルの解析したいんですけど 例えばソースファイル内に<B>があるが探したい場合 どうすれば効率よく検索できますか?
char *stringがあって、stringの中に\が含まれていたら、それを\\に置き換えたいです。 例 string = "hoge\\hoge\" 処理後↓ string = "hoge\\\\hoge\\" stringを1文字目から見ていって、\があったら、それ以降の文字を1つずらして、\を挿入するように したいのですが、文字列をずらす、もしくは文字を文字列に挿入するといった関数はありますか?
>>685 exitの引数はシェルへ返す値だったとも終われ。
どちらの方法も間違いではない。
>>685 mainが0以外を返すというのはエラーが起こったと言うことですね。
>>687 それ、文字列の長さとかを拡張したりしなきゃいけないんでかなり大変。がんばって!
>>686 exitのときは、色々処理をしていますよね?
私も詳しい事はわかりませんが、りふぁんれすに書いてありました。
return 1とした場合、どんな意味があるんですか?
異常終了してことを教えているんでしょうか?
>>686 文字列 検索 アルゴリズム
でGoogle検索。
>>687 ない。
ずらすときは確保したメモリからはみださないようにな。
>>689 一概には決まってなかった気が。結局環境依存になると思われ。
>>689 ありがとうございます。
exitの方が好ましいということはないんでしょうか?
返す値は1とかでいいんですね?
>>687 別領域にコピーしながらやるがよろし。
>>691 0なら正常、非ゼロなら異常終了という以外は
なにも決まっていない。1として良いかどうかも処理系定義。
完全にポータブルにしたければEXIT_SUCCESS(=0)と
EXIT_FAILURE(値は処理系定義)以外は使えない。
やはりCは文字列の扱いがめんどくさいね。
MSDNより exit 関数と _exit 関数は値を返しませんが、 親プロセスが待ち状態の場合は、呼び出し側プロセスの終了後に、 親プロセスが status の下位バイトを受け取ります。 status は、オペレーティング システムのバッチ コマンド ERRORLEVEL で参照でき、次の 2 つの値のどちらかで示されます。 EXIT_SUCCESS は 0 です。EXIT_FAILURE は 1 です。 # statusはexitの引数のことね
>>694 まあ、あれだ、シェルスクリプトを書くときにコマンドの返り値によって処理を変える
とかそういった使い方かな。
699 :
デフォルトの名無しさん :02/12/06 00:07
>>C言語でやるのだったらはどうすればよいでしょうか?
>>700 それを言いたいためだけに2レスも消費したんですか?
main関数がintを返すのって規格だよね? return 書いてないのは、だめなんでないの?
おっと、ここはWinスレじゃなかったか
C99ではmain関数の終端は勝手にreturn 0;になる
>>703 mainに限ってはreturnがなくても0を返すとみなすっていう話題が最近あったような・・・
>>706 前橋はreturn しろと言っているが・・・
K&Rがreturn書いてないのは問題ないの?
main()ってvoid main(void)って事でないのか?
>>707 またその話題かよ。と言われるのが落ちだぞ。というか俺が言った。
K&Rは糞という結論に。 あのmainの書き方は、ANSI準拠を詠う資格はない! mainはreturnすべき、絶対に。
えーと、C言語でチンコの勃起角を求める方法おしえてください。
>>711 こうでつ。
main()
{
int std_length,bokki_length;
scanf("%d %d",&std_length,&bokki_length);
printf("勃起角は%f度でつ。",(bokki_length - std_length) * 19.19072);
}
公式でつ。試験に出ます。
>>706 return文書かずにgccでコンパイルして実行したら3が返ってきたぞ。
int main(){}
>>716 こんなところで遊んでないで実家言った方が良いって。
>>717 実家いったら,袋にされそう・・・
首輪がいけなかったか・・・
SEなんで給料がいいんだが,それでは補えなかったか
C89ではたぶん決まってないんだろうな。 でも、K&Rがreturn書かなかったものだからそれに合わせるように C++/C99で変なルールを作ったと。
首輪プレイですか
ん?いや、だからゴミだから問題あるんだろ?
>>714 だからゴミなんだよ。
だから明示的にreturn 0;としなければいけない。
>>723 ゴミじゃないっていう保障は?
じゃなくて、
ゴミだっていう保障は?
って聞くべきだったって事
ああ、そうかごめん。706見て無かったよ。
アセンブラレベルで考えれば、実に明白。
729 :
デフォルトの名無しさん :02/12/06 01:04
なにガベってんだYO!
(´-`).。oO(本だったらスキャンして…
>>713 ちゃんとgcc -fstd=c99オプションつけた?
>>731 その前にgccのバージョンを聞かなくて良いんですか?さっきから疑問なんですが。
>>731-732 2.95です。
cc1: Invalid option `-fstd=c99'
C言語は終わったはずなのに、なんでこのスレは好調なんだ?宿題か??
>>733 ドキュメントに載ってない?
昔は何だっけ… -std=c9x だっけ。
>>734 ご自分のスレッドに帰るのが身のためです。
737 :
デフォルトの名無しさん :02/12/06 09:01
16進数なら0x、8進数なら0を前につけますよね。 2進数ならどう書けばよいのですか?お教えください。
>>737 規格では出来ない。
コンパイラによっては拡張機能として0bで指定できるものもある。
そういう機能がない場合は↓みたいなのを定義するとか。
#define Ob0000_0000 0
#define Ob0000_0001 1
#define Ob0000_0010 2
…
#define Ob0000_0000 0 #define Ob0000_0001 1 #define Ob0000_0010 10
742 :
デフォルトの名無しさん :02/12/06 10:59
LCC-Win32なんですが、
>>2 でライセンスや機能などに問題あり、とありますが
どのように問題があるのでしょうか。
英語め…。
>>742 漏れも英語わからんがダウンロードしてみた。
インストーラに出てくる Licence Agreement で、商用禁止をうかがわせる
文があった。
学術研究に関してなら制限無しのようだ。
機能についてはまだわからない。
機能については、日本語に対応していないこと、C++ が使えない事以外は問題なさそうだ。
>>743-744 おおお、どうもです。
機能の問題はやっぱりそれだけですよね。
商用禁止か、
これで作ったものをフリーで配布することに関しては問題無いのだろうか…?
実際使ってるのですがね。
746 :
デフォルトの名無しさん :02/12/06 13:26
free()に配列の配列を渡した時、 その配列が作られた過程を問わず、全ての領域を解放してくれますか? つまり、 /********* 以下、プログラム(headerファイルのincludeは省略) **********/ int i; int num_of_strings = 123, len_of_a_string = 1024; char **strings; strings = (char **)calloc(sizeof(char *),num_of_strings); for(i=0;i<num_of_strings;i++) strings[i] = malloc(len_of_a_string); free(strings); /****************************** 以上 *********************************/ としたとき、 最後のfreeは、その上のforの中でmallocした領域も解放してくれるか? ということです。 それとも、for(〜〜) free(strings[i]); をその前にやらなきゃいけませんか? よろしくお願いします。
>>746 Cがそんなに便利な言語なわけなかろう。
ありがとうございます!
>>744 すまん、読み間違えていた。
LCC 本体および付属品を転売してはいけない、と書いてあった。
雑誌の付録につけたりするのが NG なのかな。
LCC でコンパイルされたプログラムはその作者に属し、LC 作者の許可を得る事なく
販売できる、と書いてあった。
>>750 ああ、そうなのですか。
では自由に配布もできますね。
落としてわざわざ見ていただいて、感謝です。ありがd。
>>746 よ、お主が提示したもの配列の配列ではない
進数チェンジャーできました。どうでしょう。 #include <stdio.h> #include <string.h> #define BEFORE_NUM "60cm" //前の数値 #define BEFORE_SIN 23 //前の進数 #define AFTER_SIN 10 //後の進数 int main(void) { long i,s,r,n; char bC[]=BEFORE_NUM; long bN,bS=BEFORE_SIN,aS=AFTER_SIN; printf("%s(%ld)\n↓\n",bC,bS); s=strlen(bC)-1; for(i=0,r=1,bN=0;i<=s;i++,r*=bS) { n=bC[s-i]; bN+=(n>'9'?n-'a'+10:n-'0')*r; } for(i=1;i<=bN/aS;i*=aS) ; for(;i>=1;i/=aS) { n=bN/i%aS; printf("%c",n>=10?'a'+n-10:'0'+n); } printf("(%ld)\n",aS); return 0; }
読み込みは strtol()
>>687 コンソールプログラムで置き換えしながら、printfで順次文字出力するプログラムを作って、
リダイレクトでテキストに出しなされ。
757 :
デフォルトの名無しさん :02/12/06 18:39
char hoge[40]; if(hoge == ' ',' ',' ',・・・・){ hogeの中身がスペースだったら、っていう ショリするときってこうするしかないのでしょうか?
>>758 >>759 ──■──■──────■─────────■────────────
─■─■─■────■■■■■─────■■■■───────────
■■■■─■■■■───■──■■─────■─■■■■──■■─■■
──■─■───■───■─■──■───■──────■─■■─■■
■■■■────■───■■───■───■─────■───■■■─
──■──■──■──■■────■──■───■──────■■■─
■─■■──■─■─■─■────■──■──■────────■──
─■■─────■───■────■─────■────────■──
■■────■■────■─────■─────■■■■■──────
またアホが沸いた
762 :
デフォルトの名無しさん :02/12/06 19:26
int Recv(char *pbuf) { char recvbuf[16384]; while(1) { recv(socket, recvbuf, 16384, 0); } ・ ・ } みたいなプログラムがあって、この時どれくらいのサイズのファイルを 受信するか分からないので、mallocでバッファを確保したいのですが この時に、関数Recv内ではなく、呼び出した側でmallocで確保したいのですが 何か良い方法はありませんでしょうか?
763 :
デフォルトの名無しさん :02/12/06 19:39
いまさらC?
> if(hoge == ' ',' ',' ',・・・・){ 常に成り立ちそうだ。
766 :
デフォルトの名無しさん :02/12/06 19:50
763 そ、そうか そ、そういうかんがえがあるのか・・・ 俺は今猛烈に感動している
>>762 どれくらいのサイズを受信するのか分からない場合は、普通どのくらいの
バッファを確保して言いか決定できない。
従って、とりあえず適当なサイズのバッファを確保し、受信してみて、
足りなかったら realloc() で拡張していく。
Recv() を呼び出した側で malloc() したいなら、そうして、ポインタを
Recv() に渡せば良いが、そうする意味はない。
初心者をいじめんといてください。。。 スペース入ってたら、という条件は どうすればいいんですかー!! ヽ(`Д´)ノ ウワァァン!!
>>768 769 は無視しろ。
配列の内容は一気に比較できない。
for ループで回して 1 要素ずつ調べろ。
無視されてしまった・・・。
>>772 僕と結婚してくれませんか?
ガムバッテミマス!
アリガdゴザイマスタ
スマター!!
>>777 へ?strchrで駄目な理由って何?
char buf[256];
fgets(buf, sizeof buf, stdin);
if(strchr(buf, ' ') != NULL)
printf("スペースが見つかった\n");
else
printf("スペースが見つからなかった\n");
なんでわざわざループで回す必要があるのか小一時間問いつめたい。
>>777 これじゃダメなの?
#include <stdio.h>
#include <string.h>
int main(int argc, const char * argv[]) {
char hoge[40];
if (argc > 1) {
strcpy(hoge, argv[1]);
if ((strchr(hoge, ' ')) == NULL) {
printf("エn");
} else {
printf("エn");
}
}
return 0;
}
>>777 さっきの失敗。
こっちね。
#include <stdio.h>
#include <string.h>
int main(int argc, const char * argv[]) {
char hoge[40];
if (argc > 1) {
strcpy(hoge, argv[1]);
if ((strchr(hoge, ' ')) == NULL) {
printf("あった\n");
} else {
printf("なかった\n");
}
}
return 0;
}
ああ、また間違ってるし。 「あった」と「なかった」逆だね。 そこのケーブルで首t(略
char hoge[3]; char piyo[5]; int i, t; for( i=0; hoge[i] !=0x20; i++ ) memset(hoge, NULL, 3); for( t=0; piyo[t] !=0x20; t++ ) memset(piyo, NULL, 5); /*以下スペース入ってなかったら本ショリ*/ こんな感じでできますかね・・・?
>>782 hoge, piyoの中にスペースが入ってないと暴走するぞ
あと0x20とかせずに素直に文字リテラル' 'を使え
ちなみに' 'と" "は意味が違うんで教科書を良く読んどけよ
同じようにNULLと'\0'は意味が異なる、
あとhogeやpiyoの大きさを変えたときわざわざmemsetの第3引数を
変えるのは面倒だろ。文字列を'\0'で初期化したいならば、
> memset(hoge, NULL, 3);
> memset(piyo, NULL, 5);
memset(hoge, '\0', sizeof hoge);
memset(piyo, '\0', sizeof piyo);
とした方が良い。
>>778-780 「hoge の中身がスペースだったら」 をどうすれば 「hoge の中にスペースが
見つかったら」 に曲解できるんだ?
ごめん、782 のコメント見る限り strchr() でよさそうだ。
>>784 > 「hoge の中身がスペースだったら」
了解、では意地でもループは使わずにやってやる
hoge[40];
cmp[40];
memset(cmp, ' ', sizeof cmp);
if(strcmp(hoge, cmp) == 0)
printf("全てスペース\n");
else
printf("スペース以外が入ってる\n");
で、こんなの作ってどうするんだ?
>>784 うん、最初はhogeが" \0"だったらとかhogeがスペースのみの集合だったらとか考えたよ。
でも
>>768 で?スペース入ってたら」となってるから
「hoge中に一つでもスペースが入ってたら」と解釈したんだが。
実際
>>782 見てもこれであってると思うけど。
>>783 サソ
ご丁寧にアリガdゴザイマス
このままじゃ暴走いたしますか・・・
どうするか・・・?
コマータコマータ
漏れやぱりPGには向いてないなぁ。。。
んなこたぁーない がんがれ
>>789 向き不向きはかなりの部分努力で補えるよ。
また困ったらここにおいで。
>>790-791 サソ
アリガdゴザイマス
2chデハジメテ
カンドウシター!!
誰もいないオフィスで゙チョイナキソウニナッタ・・・
またきます!
いや、ちょっと待った。 757 は hoge の中にスペースが見つかったら何をしたかったんだ? 782 ははっきり言って目的不明な処理だぞ。
hoge でなく moe はどうか?
カコイイ
moe はいいが nae はいかがなものか。
お前らいつか死ぬぞ。
知ってます。
そりゃまあ。
苦しゅうない、朕は不滅じゃ。
int value = 任意; if (0 <= value) { value = 0; } これ、ifを使わないで計算だけでかけますか?
>>804 value = (0 <= value)?value:0;
俺って天才!
//面倒くさいからintは32bitと仮定
int val;
{
unsigned int i = val & 0x80000000;
i = i | (i >> 1) | (i >> 2 ) | (i >> 3 ) | ...略.. | (i
>>31 ) ;
return val & i;
}
>807 じゅうぶん面倒だろそれ。 value * ((value >> 31) & 1);
>>804 value = value * (value < 0);
でも、素直に参考演算子か if 文使って書いた方がいいよ。
説明不足でした。
可読性、速度、汎用性などを考慮したコードでは?
1000万回連続実行した場合の合計時間(debug build)。
>>804 31(ms)
>>805 94(ms)
>>807 313(ms)
沢山の回答ありがちょう。
全てにおいて
>>804 のコードが勝っていると認定されますた。
漏れって天才!
なるほど、こういう釣り方もあるのか。。_φ(..;)メモメモ
釣りとか嫌
構造体について疑問。 struct DATA { int a; } とした後、 struct DATA d1,d2,d3; とした場合と、 DATA d1,d2,d3; のようにstructを省略した場合とでは、どんな違いが出るんでしょうか?
>>812 君の言う天才は他人からみれば馬鹿以下なんだよ
>>816 前者は問題なくコンパイルできるが、後者はエラーになる。
>>820 VC++6.0だとエラーにはなりませんが…
>>821 ここはC言語スレですが何か。
$ cat a.c
struct DATA {
int a;
};
DATA d1, d2, d3;
$ cl -c a.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
a.c
a.c(4) : error C2061: 構文エラー : 識別子 'd1' がシンタックスエラーを起こしました。
a.c(4) : error C2059: 構文エラー : ';'
a.c(4) : error C2059: 構文エラー : ','
$ mv a.c a.cpp
$ cl -c a.cpp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
a.cpp
>>817 >>819 誰もが書くであろう基本的なコードが1番早かった。ちゃんちゃん。
って落ちなんだよ。反抗期さんわかった?
>>816 CとC++の違いだな。
>>823 ほう、それはよかったな。
満足したら、もうくるなよ。
>>823 氏ねよ。マジで。
お前みたいな社会の屑は迷惑だ。
何が天才なんだか。 else 無しの if が一番速いのは実行しなくてもわかるだろうに。
827 :
デフォルトの名無しさん :02/12/07 14:16
つーかこうせんかな。 if (value < 0) value = 0;
はっ!?
ひっ!?
(゚Д゚)ハァ?
( ´_ゝ`)プッ!
832 :
デフォルトの名無しさん :02/12/07 14:36
( ゚Д゚)h?
ふーん( ´_ゝ`) <=> (´<_ ` )そっか
(゚Д゚)ィェーッ
Σ(゚д゚lll)ガーン
('_`)ソウカ・・・
・・・
クソすれ
842 :
デフォルトの名無しさん :02/12/07 16:51
>>823 なぁさ、最適化OFFにしたときはきっと結果は変わると思うんだがどうだろう?
そら、もっとも使用頻度の高いifがかりかりにチューンされているのは当たり前であって。
やっぱりお前は凡人だな。
つまらん。
> 使用頻度の高いifがかりかりにチューンされているの (゚Д゚)ハァ? そんな特別な事してねーよ。 単に if で書くと必要な演算量が減るだけだ。
つーか、827 は何がいけないんだ?
フルートが鳴りません。どうしたらいいですか?
いや、827 は value == 0 の時に代入が発生しないからより高速に動く事を 期待できるはずなんだが、みんな何をそんなに一生懸命叩いているんだ? 847 のような理由は置いといて。
間違ってるから。
ああ、比較の向きか。やっと気付いた。
>>854 > なんか熱くなってない ?
いや全然。でも>853を見るまで気づかなかったよ。
848 に誰か答えてください
電気を使わないタイプのフルートのようです。
つまんねーー!!!
>>858 だったら不良品だから、交換してもらってください。
フルートですが、マジでドとレとミの音が出ません。 クラリネットではありません。
実はプルート
実はプルーン
実はぷるるん
実はぬるぽ
869 :
デフォルトの名無しさん :02/12/07 20:17
>>863 マジレスするが、ド とか言うなよ。恥ずかしいぞ。
十二音全て、ド になることができるんだからさ。
871 :
デフォルトの名無しさん :02/12/07 20:32
じゃあ何て言うの?
ハ
873 :
デフォルトの名無しさん :02/12/07 20:35
ラだよ馬鹿
わかった!! C だ!!
>>874 ピン・ポ〜〜〜ン。
もちろん「シー」なんて言っちゃ駄目だよ。
西洋では CDEFGAB ... 日本では ハニホヘトイロ ...
ドボルザークが
>>870 マジレスするが、そんなことは初めて聞いた。
>>881 相対的な話だろ。それが調にもつながるという。
だとするとAの周波数が厳密に決められてるのはおかしいわけだがw
>>881 それぞれの調の主音をドと読むんだよ。
ニ長調ならレをドと読み替える。
楽典読んでごらん。
>>881 音楽のことを知らないくせに偉そうなこというな。
黙ってろヴォケが。
>>882 A の周波数ってどっかで決まってんの ?
普通は、440Hz〜445Hz ぐらいの幅持ってたと思うが。
887 :
デフォルトの名無しさん :02/12/07 23:57
つーか、これ何のスレだ?
ツェー
>>886 ここで調律論をやる気か?
440Hzと覚えておけば充分。
< < >858-889ハァァァ??? < ∨∨∨∨∨∨∨∨∨∨∨\ /∨∨∨∨∨∨∨∨∨∨ /:|. | | /:| / .:::| ∨ / :::| | ...:::::| / ::::| i  ̄ ̄⌒゙゙^――/ ::::::::| /_,,___ . _,,,,__,_ :::::::::::\ / ゙^\ヽ.. , /゙ ¨\,.-z ::::::::::\ 「 ● | 》 l| ● ゙》 ミ.. .::::::\ /i,. .,ノ .l| 《 ..|´_ilト ::::::::::\ / \___,,,,,_/ .'″ ^=u,,,,_ v/.. :::::::::::::l! |  ̄ ,,、 i し./::::::::.} | / ,,____ _,/ ̄ \ \ ノ ( ::::::::::| | |.. | /└└└└\../\ \ '~ヽ ::::::::::::::} | .∨.|llllllllllllllllllllllllllllll| ::::::::::{ | |.|llllllllllll;/⌒/⌒ 〕 :::::::::::} | |.|lllllllll; ./ . . | ::::::::::[ .| |.|llllll|′ / . | .| :::::::::::| .| |.|llll| | .∧〔 / :::::::::::::/ / }.∧lll | ../ / / :::::::::::::::::\ / /| \┌┌┌┌┌/./ /::: :::::::::::::::::\ ( ゙゙^^¨^¨゙゙¨  ̄ ̄ ̄ /::::::::::: ::::::::::\
>>889 何言ってんのこの人 ?
俺は、A の周波数が (* 厳密に *) 決められているかどうかか知りたいだけだよ。
>>891 それをしってどうなる?
人間の耳は5Hzの違いなんて聞き分けられないぞ。
プログラム的には450でじゅうぶんじゃねーの。
それ以上のことを言うヤシは町立論(略
>>892 2行目に単位書いて3行目にそれがないのって不思議。
ラの音は周波数が上がってきているんだよ。 昔は400Hzくらいだった。
でも地球の自転速度は徐々に遅くなってきてるぜ。
>>892 > それをしってどうなる?
単なる興味だよ。ウィーン音楽協会みたいなとこが決めてんのかなぁって思っただけ。
> 人間の耳は5Hzの違いなんて聞き分けられないぞ。
フシ耳ですか ? 440Hz に対して、5Hz と言うと半音の約 1/5 だよ。
素人でも、なんとなく分かるぐらいのところだよ。
絶対音感持ってる奴なら、確実にわかるぞ。
ちょ球の自転速度が遅くなるはずはありません。 なぜなら地球は宇宙エネルギーをもらって動いているので 永久不変なのです。 もし自転速度が遅くなる時は宇宙がビッグバンになる時くらいです。
>>898 何cent?20cent位なら聞き分けられるYO!
秒の定義はもう変わったよ。
1分の1/60が1秒です。
1時間の1/60が1分です。
嵐どもはさっさと氏ね
>>905 じゃあ1時間の定義は?
1日の1/24が1時間です。
じゃあ1日の定義は?
>>907 太陽が南中してから翌日再び南中するまでの時間。
>>901 おお、久しぶりに cent なんて単位を聞いたよ。
既に定義を忘れてたので、ググッたら 100cent = 半音 ということのようだ。
つーことは、440Hz と 445Hz の違いは...
(log(445/440) / log(2)) * 1200 = 19.562174794920598517900518817139
やね。
>>898 にも書いたけど、普通の人ならなんとなくわかるぐらいだよ。
DETUNEでちゅーん
912 :
◆ZtXjKqCmiQ :02/12/08 01:18
C言語の話題は?
#include と打ったらトリップになっちまった(T_T)
本物はボキです?
話を蒸し返すようで悪いんだけどさ
英語での
CDEFGAB
ドイツ語での
CDEFGAH
日本語での
ハニホヘトイロ
をイタリア語では
ドレミファソラシ
って発音するんだよ。
だから
>>883 は真赤な嘘。
あとは音楽板のほうでどうぞ
917 :
デフォルトの名無しさん :02/12/08 01:58
Javaしか触ってなくて、Cのソースがイマイチ読めないんだけど、何とか上手に読む方法ない? 木生成のアルゴリズムなんだけどね。
>>915 もしそうだとしても、それが通用するのはイタリアだけじゃないのか?
普通は調によってドそのものが変わる・・・
これ以上は音楽板逝くべきだな
そろそろ、次スレなんだが・・・ >入門書レベルの質問はC言語質問所スレへ行け。 入れる? ここはどうしても荒れてしまうから。なんか。
920 :
デフォルトの名無しさん :02/12/08 02:15
配列の最大数は決まってるのですか? 最大数を大きくしたい場合どうすればよいですか?
921 :
デフォルトの名無しさん :02/12/08 02:24
int型の最大値と同じって事ですか?
>>922 INT_MAXは、多分論理アドレスのMAX値ということが言いたいんだと思うが、
実際にはそこまで取れないと思う。
ごめん。論理アドレスのMAX値だったらUINT_MAXだ。 ただしintとポインタの大きさが同じ処理系に限る。
926 :
デフォルトの名無しさん :02/12/08 04:39
>>924 規格では、どの処理系でも最低限65535バイトのオブジェクトは作れることが
保証されている。それ以上大きいのは作れない処理系でも規格準拠といえる。
だから、「絶対安全」と保証されている配列のサイズは65535バイトまで。
440Hzがラ?下のプログラムを見てください。ファになるのですが。DOS/V、ANSI.SYSが必要と思われます。ポート入出力なので注意してください。 #include <stdio.h> #include <conio.h> #include <time.h> int main(void) { int Hz=440,int key=0,pM=1;clock_t t; printf("\x1b[12;5H+:+ -:- *:*2 /:/2 0:増減値増加 .:増減値減少 Enter:♪ p:End"); printf("\x1b[14;37H増減値:%-5d\x1b[16;37HHz:%-5d",pM,Hz); for(;;) { key=getch(); if(key=='+')Hz+=pM;if(key=='-')Hz-=pM;if(key=='*')Hz*=2;if(key=='/')Hz/=2;if(key=='0')pM++;if(key=='.')pM--; if(Hz<=-1)Hz=0;if(Hz>=32768)Hz=32767;if(pM<=-1)pM=0;if(pM>=32768)pM=32767; if(key=='\r') { _outp(0x43,0xb6);_outp(0x42,Hz%256);_outp(0x42,Hz/256); _outp(0x61,_inp(0x61)|0x03); for(t=clock();t+500>=clock();); _outp(0x61,_inp(0x61)&0xFC); } printf("\x1b[14;44H%-5d",pM);printf("\x1b[16;40H%-5d",Hz);if(key=='p')break; } return 0; }
929 :
デフォルトの名無しさん :02/12/08 05:13
素数のプログラムを作らないと単位が取れないです。 誰か作り方を教えてください。
932 :
デフォルトの名無しさん :02/12/08 05:18
933 :
デフォルトの名無しさん :02/12/08 05:18
ここは C のスレだから A の話はいかんのだろうが、A = 465 Hz というべらぼう なチューニングもあるらしいぞ。 それは置いといて、移調楽器の基音をドと呼ぶ事でずらすことはよくあるみたい だけど、曲調によってドが変わるという話は聞いたことないぞ。 友人に、音大卒もプロで楽器やってる人もイパーイいるが、みんな例えばニ長調なら レミファソラシドレと言っているし、そんな事は教わらなかったと言っている。 第一、ドレミファソラシドはイタリア読み、CDEFGABC は英語読み、CDEFGAHC は ドイツ読み、ハニホヘトイロハは和読みというだけで、それ以上の違いはないだろう。
>>934 レミ 「ファ#」 ソラシ 「ド#」 レ
>>934 「固定ド」と「移動ド」くらい中学校で習うだろ。
な〜にが音大だYO!
悔しかったから一生懸命調べたんだろうが
もっぺん出直して来いや。他の板でナー。
ここには2度とくるな!
>>936 中学レベルの音楽知識で大口叩くとは真性キティだな。
音名と階名を混同してると思われ。
実際問題として音名の意味で「ド」とか「レ」とか言うことのほうが多いし、
「音合わせしたいからラの音出して」と言われて「調は何ですか」
なんて聞くやつはおらん。
音合わせするときにわざわざ○○の音出してなんて言うか?
>>937 ハイハイ、もう分ったから他の板逝って。
検索してみれば分るけど「固定ド」「移動ド」どちらを
使うかはコミュニティの流儀による。「あんたのまわりでは」
そういう決まりなのかもしれんが、他では違うかもしれん。
少なくとも中学高校の音楽では「移動ド」で教えているから
アマチュアの大部分にはそちらのほうが馴染みがある。
ハニホ…やCDE…ならそういう混乱の余地は無い。
>>937 「ハ長調」とか「C Major」とかは言うけど、「ド長調」とは言わない。
「ド」は移動する(ことがある)から。
君の理屈では「ド長調」「ラ短調」があるはずだが?
そういえば、「ハ長調のソがト長調ではドになる」というように 習ったな…「トがドになるのがト長調」と覚えた。
>>937 は中学で音楽を落第しますた。
「ド長調」(ププ
階名という言葉を知っているのに意味を知らないとは変な奴だな
>>937 って。
「ドレミ」は音階によって呼び名が変わる(移動する)から階名と言うんだけど。
音楽理論の教科書とかにはI II III IV〜とか数字で書いてあるけど、 そういうのは実生活で使わないのですか>薀蓄垂れしてる人
新たなミュージックシーンが誕生する予感。 "ド長調" from ム板@2ch
>>945 コード教えてる本に載ってたなぁ。
Iをトニックにして後は相対的にって漢字の。
動的に音階を生成
>>948 >中学レベルの音楽知識で大口叩くとは真性キティだな。
いらんこと書かなきゃ良かったのにな(藁
うんち君垂れている人
まだ音楽話やってたのか…。 話の腰折って悪いけどちょっと教えて。 任意の文字列 char str[] 中に %02d のような型指定子があるかないか調べたくて char s1[], s2[]; sprintf(s1, str, 1); sprintf(s2, str, 2); if (strcmp(s1, s2) == 0) { /* 型指定子なし */ } else { /* 型指定子あり */ } ってやったんだけどこれって問題ある? str[] によっては sprintf() で 1 や 2 が変換されないじゃない。 行き場のない引数を与えていいものか気になるんだけど。
>>952 str = "%2d%s%s%s%s%s%s%s";
で試してみ。
普通はト長調について言う。
956 :
デフォルトの名無しさん :02/12/08 15:18
957 :
デフォルトの名無しさん :02/12/08 15:25
959 :
デフォルトの名無しさん :02/12/08 15:29
>>958 いい加減にしろクソヤロウ。
もうこれ以上荒らすな。
>>937 > 「音合わせしたいからラの音出して」と言われて「調は何ですか」
> なんて聞くやつはおらん。
お前、楽器のこと知らんだろ。ラの音出してなんて言うわけないじゃん。
指揮者が間違えてそんなこと言ったら、金管楽器、サックスとビオラ奏者に「ざけんなよ」と言われてもしょうがないぞ。
(他の楽器もあるかも知れんがなにぶんにも記憶が曖昧だ。)
これらの楽器は、
>>934 が移調楽器と書いてある通り、普通に言う「ラ」の音が既に移調されている。
だから、オーケストラの楽譜等では楽器に合わせて移調して書いてある。
確かフルートがハ長調で書いてあったら、トランペットはニ長調で書いてあるはず。
(中には、C 管なんて言うトランペットもあるけどね。)
普通の楽団なら、「音合わせしまーす。」とか言うだけで、みんな A の音を出すよ。
(つーか、みんなの準備が揃った頃に第一オーボエ奏者が「ポェ〜〜〜」と吹き始めて、それに合わせるんだと思う。)
C言語って音楽に関係する言語だったんですね。
>>962 いや、もう 915=934=937 がタダのクズヤロウであるという
結論は既に出ているわけで…
C言語スレは軒並み壊滅だな。
「質問所」スレを立てた1は、 思い通りに荒らせてさぞ満足してるだろうな…
969 :
デフォルトの名無しさん :02/12/08 18:47
もう埋めてしまいませんか? 誘導書き込み荒らしがうざいので。 協力者求む 969ゲット!
がーん。 970 ニナッテシマッタ・・・
>>972 いい加減にしろクソヤロウ。
もうこれ以上荒らすな。
埋め埋め
977ゲトズザー
,〜'~`〜'~`〜'~`〜'~` 、 。 ∧_∧。゚ ( ひぃえぇぇぇぇぇ ) ゚( ゚´Д`゚)っ゚ ( 誰か助けてぇ〜!!! > (つ■ / `、_,〜、_,〜 、_,〜 、_,〜' | (⌒) し⌒^ '''''
\モウ/ \ね/ \ アボカド / \ 馬 / \ 鹿 / \ カト / ∩ ∩ | つ ⊂| ∩;;;∩ ∧ノ~ ! ,'っ _c,! (Y;;;;;;;;;;ヽノ) ヽ ミ| ・ \ ⊂/ ・ \ i;;;;;;;;;;゚;;;゚ヽ γ⌒^ヽ ミ| ... '_) | __,,▼ ∫ /;;;;;;\;;;;'⌒) /::::::::::::::ヽ ミ| (,,゚Д゚) |・ (,,゚Д゚) (,,゚Д゚) )|;;;;;;;;(,,゚Д゚) (⌒)(⌒) /.:::::::::(,,゚Д゚) | (ノ |) | (ノ |) ⊂三つ: つ ババンバ ι|;;;;;;;つ ;;;/つ ( ・Å・) i::::::(ノDole|) | 馬 | |・・ .鹿 | |||||||| バン ヽ..;;;;;;;;/ γ⌒ ( ゚Д゚)) ゙、:::::::::::::ノ 人.._,,,,ノ ι・,,__,ノ | | バン U"U 乂_) UU U"U U"U U"U U"U
何このスレ・・・・・? /ヽ /ヽ / ヽ / ヽ ______ /U ヽ___/ ヽ | ____ / U :::::::::::U:\ | | // ___ \ ::::::::::::::| | | | | | U :::::::::::::| | | .|U | | ::::::U::::| | | | ├―-┤ U.....:::::::::::::::::::/ | |____ ヽ .....:::::::::::::::::::::::< └___/ ̄ ̄ :::::::::::::::::::::::::| |\ | :::::::::::::::::::::::| \ \ \___ ::::::::::::::::::::::::|
なんかここ二三日で激しく荒れてるな。
へ ヘ へ ヘ へ ヘ \| / \| / \| / ';: ":;. ';: ":;. ';: ":;. ∧∧⊂.;'、 :つ ∧∧⊂.;'、 :つ ∧∧⊂.;'、 :つ ;'゚Д゚、":、.: :;:' ;'゚Д゚、":、.: :;:' ;'゚Д゚、":、.: :;:' '、;: ...: ,:. :.、.: ' '、;: ...: ,:. :.、.: ' '、;: ...: ,:. :.、.: ' `"∪∪''`゙ `"∪∪''`゙ `"∪∪''`゙
._ |:::::| |:::::| ∧_∧. ∧_∧|:::::| ( ´∀`∩(・∀・ )___| | ̄ ヽ ( つ ノ ( ⌒つ| ..| /  ̄.| |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ .| |_______________.| |::::::::__ __ __ __ __:::::::::| |::::::`.! !´ ./△ ! `l D )`l l//´::::::::| |:::::::::| |_// ̄!.!__| |\ヽ,,| !\\_ :::::::| |::::::::´――' '――` ´―― ´―` :::::! |_;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;_| | SPECIAL. MILD. TOBACCOS. | ( |――――――――――――――‐| ) ノノ | ______ | (( ) ( | ヽ / | ) ノ ) ( | | .∧ ∧ | | ( _⌒) ( ( ) | | (゚д゚,,) | | )ノ ヽヽ ノ | | .| | ( ( ) )) | . ̄ ~~  ̄ | ∧ ∧ )ノ ウマー (,, ( | MILDS | (,,゚д゚)O_____________)ノ | CHARCOAL FILTER. | ( ⊃(;;;;;;;;;;;;;;;;;;;;;;;( ((;;) |____________________|〜(,,⌒⊃⊃ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  ̄
\ \ \ \ /| 。. ,,-'―\ _,/ノ . . ___,,-―――='' ̄ ̄ _,,-'―=''' ̄_,/| o * _,,-―=''' ̄ ___,,-―――='' ̄ __,-―='' ̄ / . . . _,,-―=''' ̄ _,,-―='' ̄ ヽ / +  ̄ ̄ _,,-―=''' ̄ \ / . . . . ,,-='' ̄ ヽ / . 。. ★ ☆ ,,,-'' ヽ/ 。. . -―'' ̄ /\ ___, /\ | . ☆ + . | ..::::::::::::... | / ..:::::::... | + . . . | | / | . . ☆ ヽ γ´~⌒ヽ. | / /☆ . * +. . ――ヽ / ヽ | / /⌒ヽ、. . . . \/ | |_/ / ヽ +★ / | / ノ * ☆
埋め立て
♪きのこっのっこーのこげんきのこっエリンーギマイタケブナ(゚д゚)シメジ! /⌒ヽ γ´⌒`ヽ / ● ヽ ./Oo〇oOヽ ,-''"¨ ̄¨`'‐、 (●/⌒ヽ●) (Oγ⌒ヽOo) (,,(,,i,,,i,,,,,,,,i,,,,i,,),) ヽ|´∀` |ノ )) ヾ(゚Д゚ )゚ノ )) ) ( )) .ゝ___ノ ゝ_ノ. (゚ー゚* )
埋め立て
>>988 どうも左と真中が毒キノコに見えるわけだが・・
>>962 オーケストラの音合わせは指揮者の口笛を基準にするんだよ。
ウソだけど。
1000間近なのに静かだなぁ。 1000は誰かに譲るよ。 お前ら、今までに何回1000取った事ある? 俺は2回
俺1回。 っていうか前から疑問なんだけど1000取ると何が嬉しいの? 俺は別に嬉しくなかった。普通に会話しながら1000逝っちゃったし。
1000
1000
1000
1000
1000 :
デフォルトの名無しさん :02/12/08 21:25
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。