C言語なら俺に聞け(入門篇) Part 15

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:2007/07/09(月) 18:25:34
宿題スレ池カス
953デフォルトの名無しさん:2007/07/09(月) 18:29:26
そもそもこれだけでは板違い。
954デフォルトの名無しさん:2007/07/09(月) 18:29:27
>>951
@2
A1
B2
C2
D2
E2
955デフォルトの名無しさん:2007/07/09(月) 18:31:39
>>954
サンクス!
956デフォルトの名無しさん:2007/07/09(月) 18:33:36
>>954
Eは1じゃまいか?たしか・・・
957デフォルトの名無しさん:2007/07/09(月) 18:34:18
ソケットを使ってのネット通信について質問させてください。

UDPでの通信で、
サーバ側がソケットを作成→bindし、
クライアント側がソケットを作成→connectした場合、
サーバから文字列を送信する場合はどうすればいいのでしょうか。
958デフォルトの名無しさん:2007/07/09(月) 18:35:52
ネトPスレ池カス
959デフォルトの名無しさん:2007/07/09(月) 18:36:29
>>957
send
960デフォルトの名無しさん:2007/07/09(月) 18:39:57
>>954>>956
Eは1だね
961デフォルトの名無しさん:2007/07/09(月) 18:42:14
>>654
@、Aが俺は間違えた
962デフォルトの名無しさん:2007/07/09(月) 18:43:56
っつか、機種依存文字を多用するな・・・
963デフォルトの名無しさん:2007/07/09(月) 18:44:20
マカ乙
964デフォルトの名無しさん:2007/07/09(月) 18:47:50
機種依存文字なんて既に死語じゃね?
965デフォルトの名無しさん:2007/07/09(月) 18:48:52
半角カナのごとくそういう時代になったのか・・・俺の知らぬ間に。
いや、もう10年近くインターネットを毎日利用しているが。
966デフォルトの名無しさん:2007/07/09(月) 18:53:16
マカってほんとに「@」←これ見えないの?
967デフォルトの名無しさん:2007/07/09(月) 19:02:05
「こんにちは、マックです。」
「こんにちは、パソコンです。それでは第(ピー)問」
968デフォルトの名無しさん:2007/07/09(月) 19:02:22
大学の端末室はUNIXだからやっぱり丸付き文字は見られないな
969デフォルトの名無しさん:2007/07/09(月) 19:12:45
lynxで見てるの?
970デフォルトの名無しさん:2007/07/09(月) 19:22:19
携帯からも見えるが
検索しづらい文字使われるといらっとくるな
971デフォルトの名無しさん:2007/07/09(月) 19:39:23
>>966
Firefox からだと「! 」に見える。
まあ、フォント次第なんだが、デフォだとそうなるね。
972デフォルトの名無しさん:2007/07/09(月) 20:01:06
やっぱまだ標準的じゃないじゃん。誰だよ、マカーだの死後だの自分基準でものを言っている香具師は?
973デフォルトの名無しさん:2007/07/09(月) 20:31:20
文字集合にUnicodeを使っていれば問題ない。そこにも丸付き数字は入っている。
近年はデスクトップもUnicodeの文字を表示できる環境が広まっているので、
確かに機種依存文字でなくなりつつあるというのはあながち間違いではない。

ここなら #9312;と書けばいいはず。①
974デフォルトの名無しさん:2007/07/09(月) 20:55:04

int型のnを、15を越えない範囲内でインクリメントしたい場合、こ
んな初心者丸出しのコードが思いつくのだけれど、もっと良い方法
は無いでしょうか?

if (n <= 15) {
n++;
} else {
;
}

ビット演算する方法を考えてみたけど、とても良い方法とは思えな
いので、教えてください。一応elseを明示しています。

if (!(0x10 & n)) {
n++;
} else {
;
}
975デフォルトの名無しさん:2007/07/09(月) 21:07:36
単純にこれでいいよ。Simple is best.
if (n <= 15) {
  n++;
}
後はコンパイラの最適化に期待しな。
976デフォルトの名無しさん:2007/07/09(月) 21:10:35
>>973
同じことだよ。
やっぱ Mac からは「! 」に見える。
977デフォルトの名無しさん:2007/07/09(月) 21:12:42
へぇ〜MacてUnicodeに対応してないんだ。
978デフォルトの名無しさん:2007/07/09(月) 21:14:08
table[32] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, ...};
としておいて
table[ n & 0x1F ]
というのはどうか
979デフォルトの名無しさん:2007/07/09(月) 21:14:54
ダサッ
980デフォルトの名無しさん:2007/07/09(月) 21:15:36
うるさいな
一生懸命考えたんだからガムぐらいくれよ
981デフォルトの名無しさん:2007/07/09(月) 22:26:34
>>974
#include<stdio.h>
int main(void){
  struct{unsigned value:4;}l={0};
  int m=0,n=0;
  int i;
  for(i=0;i<20;i++){
    printf(" %2d %2d %2d\n", l.value, m, n);
    l.value+=1;
    m=(m+1)&0xF;
    n=(n+1)%16; // <- オススメ
  }
  return 0;
}
982デフォルトの名無しさん:2007/07/09(月) 22:30:55
>>981
確かに 15を越えない範囲内でインクリメント はしているが、動作が変わってる

>>974
n+=(n<15)?1:0;
または
n=(n<15)?(n+1):15;
983デフォルトの名無しさん:2007/07/09(月) 22:32:31
最速だし読んだ人も理解りやすいしifでいいじゃん
if (n <= 15) {
n++;
}
984デフォルトの名無しさん:2007/07/09(月) 22:32:46
もう終わってるネタだから
985デフォルトの名無しさん:2007/07/09(月) 22:34:35
ということにしたいのですね:-)
986デフォルトの名無しさん:2007/07/09(月) 22:36:48
今気づいたが 15を超えない範囲でインクリメントする場合の最大値は
15 になるのか 16 になるのかよく分からないな
>>974 に沿えば 16 が最大値だけど)
987デフォルトの名無しさん:2007/07/09(月) 22:37:38
次スレそろそろたてる?
988デフォルトの名無しさん:2007/07/09(月) 23:07:00
次スレを立てるにはスク水が必要じゃ
989デフォルトの名無しさん:2007/07/09(月) 23:07:57
C++版も一本化したし、このスレも
【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 131
http://pc11.2ch.net/test/read.cgi/tech/1170338926/
に合流でいいと思う。もともと厨が立てたスレだし
990デフォルトの名無しさん:2007/07/09(月) 23:33:23
くだすれC言語(初心者用) Part.2
http://pc11.2ch.net/test/read.cgi/tech/1172099763/

こっちもあるな


ただ、一本化すると必然的に流れが速くなるから嫌だ俺は。
一つの白熱した議論が行われてたりすると、スルーされたり
入りづらかったりと、弊害もあるから。
991デフォルトの名無しさん:2007/07/10(火) 00:32:55
すいませんマージソートの非再帰的なプログラムってどうすればいいですか?
992デフォルトの名無しさん:2007/07/10(火) 00:51:06
現在の幅を 1 から倍々で増やしていって、
幅が全長を越えるまで処理すればいいんじゃね?
993デフォルトの名無しさん:2007/07/10(火) 02:21:41
-10を2進数に直すと、1111 0111で合っていますでしょうか?
自分の解釈では10なら、0000 1010なので-なら1から反転で
上のような回答になりました、違っていたらご指摘お願いします。
994デフォルトの名無しさん:2007/07/10(火) 02:24:26
10 (10) = 0000 1010 (2)
         ↓ビット反転
      1111 0101 (2)
         ↓+1
      1111 0110 (2) = -10 (10)
995デフォルトの名無しさん:2007/07/10(火) 02:25:18
-10 と 10 なら、足して 0 になれば正解だよ
その2つを足して 0000 0000 になる?ならんな
996デフォルトの名無しさん:2007/07/10(火) 02:25:21
1111 0110 やな。1010を反転させて0101 に 1 を加える
それより上の桁は全部 1
997993:2007/07/10(火) 02:41:11
まず、ここまで10 (10) = 0000 1010 (2)は解ります
反転は0かrではなく、1からではなかったでしょうか?
998993:2007/07/10(火) 02:42:04
因みに、どうして      1111 0101 (2)
         ↓+1
      1111 0110 (2) = -10 (10)

で、+1をするのでしょうか?
999デフォルトの名無しさん:2007/07/10(火) 02:44:58
1000デフォルトの名無しさん:2007/07/10(火) 02:47:21
っつか、どうしてって言われても、そういう仕組みがあるから。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。