C言語なら俺に聞け(入門編)Part 101at TECH
C言語なら俺に聞け(入門編)Part 101 - 暇つぶし2ch1:デフォルトの名無しさん
12/05/04 04:05:26.52
C言語の入門者向け解説スレッドです。

★前スレ
C言語なら俺に聞け(入門編)Part 100
スレリンク(tech板)
★過去スレ
URLリンク(makimo.to:8000)
★教えて欲しいのではなく宿題を丸投げしたいだけなら
  ↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 157代目
スレリンク(tech板)
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

長くなりそうなコードはcodepadに貼り付けてもいいでしょう
URLリンク(codepad.org)
URLリンク(ideone.com)

2:デフォルトの名無しさん
12/05/04 06:44:59.49
すみません。教えてください。
mikrocというコンパイラを使ってPICマイコンで電子工作をしてるのですが、
指定した桁の値を取り出すにはどうすれば良いのでしょうか?

例)x = 12345;という変数の中の値を、a = 1;b = 2;c = 3;d = 4;e = 5;

というように取り出したいです。
C言語についてはPICで遊ぶために0からのスタートでして、ほぼ初心者です。
よろしくお願いします。

3:デフォルトの名無しさん
12/05/04 08:04:22.28
>>2
取り出したい桁を右からn桁目とすると
「(n-1)回、10で割った整数」を10で割った際の余りを求めれば良い

4:デフォルトの名無しさん
12/05/04 08:48:55.98
>>2
>>3のやり方が正攻法だと思う。
バッファを余計に使って良ければ、sprintfを使うのが簡単かな。
char buf[10];
int x = 12345;
sprintf(buf, "%d", x);

これで、buf[0]: 1, buf[1]: 2, buf[2]: 3, buf[3]: 4, buf[4]: 5
となります。

5:デフォルトの名無しさん
12/05/04 11:47:36.94
ビットフィールドへのポインタを関数に渡したいです。
しかしポインタのアドレスはバイト単位であり、
無理だということが分かったのですが何か良い方法は無いでしょうか?
なぜこんな事がしたいかと言いますと、とびとびの複数のビットフィールドに対し
同じ処理を行いたく冒頭の事が出来ないか試行錯誤していました。
ご助言頂けると嬉しいです _ _

6:2
12/05/04 12:02:37.64
>>3>>4さん!

とてもわかりやすい回答ありがとうございます。
早速実験してみます!

7:デフォルトの名無しさん
12/05/04 12:11:24.13
>>5
同じ処理がしたいのならやればいいじゃん。
どうしてもポインタが必要な処理なの?
もうちょっと具体的に状況を書いてみて。

8:5
12/05/04 12:36:54.04
>>7
レスありがとうございます!状況としてはマイコンの制御のためにコードを書いています。
具体的には以下の処理を行いたいです。
// 空行まで変数の宣言です。
struct bit {
 unsigned b0: 1;
 unsigned b1: 1;
 unsigned b2: 1;
 unsigned b3: 1;
 unsigned b4: 1;
 unsigned b5: 1;
 unsigned b6: 1;
 unsigned b7: 1;
};
union port {
 struct bit bit;
 unsigned char byte;
};
volatile union port *p2 = (union port *)0x00E4;
unsigned char sw2_before = 1, sw3_before = 1;

if(sw2_before == 0 && p1->bit.b7 == 1)
 p2->bit.b4 ^= 1;
if(sw3_before == 0 && p1->bit.b3 == 1)
 p2->bit.b5 ^= 1;
ですが、現状だとご覧のように同じようなコードが二回繰り返されているので
これを関数として抜き出したいんです。(空行以降の部分です。)

9:デフォルトの名無しさん
12/05/04 13:10:03.66
>>8
マクロで書けばいいんじゃね?
仮にビットフィールドへのポインタが有りだとしたらどんなコードを書く?

10:5
12/05/04 14:27:08.47
>>9
ありがとうございます!マクロですか、余り使ったことなかったのですが調べてみます!
仮にビットフィールドへのポインタが有りだとしたら以下の様にしたいです。
void led_toggle_switch(unsigned *led: 1, unsigned char before, unsigned char after) {
 if(before == 0 && after == 1)
  *led ^= 1;
}
led_toggle_switch(&p2->bit.b4, sw2_before, p1->bit.b7);
led_toggle_switch(&p2->bit.b5, sw3_before, p1->bit.b3);

11:デフォルトの名無しさん
12/05/04 14:45:02.78
ビットフィールドを使わずに、ビット演算でやれば似たようなことはできるね。

12:デフォルトの名無しさん
12/05/04 15:29:00.01
>>10
bit位置を示す引数をもう一つ追加。
ledはビットフィールド変数ではなく、byteの方にすれば、

void led_toggle_switch(
unsigned *led: 1,
unsigned bitPos, // 1-7
unsigned char before,
unsigned char after)
{
if(before == 0 && after == 1){
*led ^= (1 << bitPos);
}
}

13:デフォルトの名無しさん
12/05/04 15:34:21.91
>>10
いえいえ

14:5
12/05/04 15:51:10.19
>>12
なるほど、こういうやり方もあるんですね・・・。全く思いつかなかったです・・・。
とても勉強になりました、ありがとうございます!

マクロも自分で書いてみました。スッキリ纏まって良い感じです!
#define LED_TOGGLE_SWITCH(led, before, after)\
if(before == 0 && after == 1) { led ^= 1; }
LED_TOGGLE_SWITCH(p2->bit.b4, sw2_before, p1->bit.b7);

15:デフォルトの名無しさん
12/05/04 16:01:37.31
ビットフィールドのレイアウトがどうなるかは未定義だし、
ビットごとに意味を割り当てるにしてもビットフィールドを使わないことが多いね。

16: ◆QZaw55cn4c
12/05/04 16:12:34.41
もうビットフィールドなんて廃止したら‥‥‥

17:デフォルトの名無しさん
12/05/04 16:49:27.66
>>12
レスが付いた後だけど、今見返すと、第2引き数のコメント間違っているね。

誤)
unsigned bitPos, // 1-7
正)
unsigned bitPos, // 0-7

18:デフォルトの名無しさん
12/05/04 16:53:41.76
>>14
マクロ関数書くときは各引数を括弧でくくっておかないと、思わぬ動作をすることがある。

#define LED_TOGGLE_SWITCH(led, before, after)\
if(((before) == 0) && ((after) == 1)) { (led) ^= 1; }



19:デフォルトの名無しさん
12/05/04 17:37:22.16
>>14
いえいえ

20:デフォルトの名無しさん
12/05/04 19:38:55.05
随分とマトモな流れなんで、スレ間違えたのかと錯覚したわ。

21:デフォルトの名無しさん
12/05/04 19:54:41.84
まあオレのおかげなんだけどな、照れること言うなよな ははは


22:デフォルトの名無しさん
12/05/04 22:53:48.92
>>16
何で?

23:デフォルトの名無しさん
12/05/04 23:34:29.44
理解できないからだろ。聞いてやるなw

24:デフォルトの名無しさん
12/05/04 23:46:03.86
>>22>>23
>>16では無いのだが、ビットフィールドって処理系依存だからでしょ。
LSB、MSG並びと、宣言の順番がどうなるか、とか。

あと、ビットフィールドと共用体の合わせ技もよく使うが、
(>>8のportがまさにそれ)
共用体の一方で設定した値を他の型で読んだ時にどうなるかも処理系依存だったりする。

25:デフォルトの名無しさん
12/05/05 00:30:24.15
廃止する理由には見えないな

26:デフォルトの名無しさん
12/05/05 01:00:43.97
ビットフィールドはハードに依存した並びが必要ないときはどっち向きでも関係ない(1bitでフラグ的な使い方)
gccだとarchに依存したエンディアンで並び順は考慮でける
コンパイラによっては、並び順をオプション等で指定できるのもある

要は使い分けが出来るかどうか、ビットフィールド

ワケワカでやってハマったから、使えないっていう人がいるからね

27:デフォルトの名無しさん
12/05/05 01:39:16.73
0と1を入れるだけでも32bit変数を使うような時代にビットフィールドとか過去の遺物じゃないのかね

28:デフォルトの名無しさん
12/05/05 01:43:12.51
まさかCでやる全てが32bitのデフォだと思ってるのか?
今世紀最新の遺物だなお前
動く化石だ


29:デフォルトの名無しさん
12/05/05 01:52:10.36
>>27もよく解らんが、>>28の応じ方は輪をかけて解らん。

30:デフォルトの名無しさん
12/05/05 02:06:26.65
H8 の unsigned int は 16bit = 2byte
superH は 4byte


31:デフォルトの名無しさん
12/05/05 02:13:55.71
組込とかなら今でも現役だったりするのかね

32:デフォルトの名無しさん
12/05/05 02:41:12.25
ビットフィールドを絶対使えとかいってないでしょ

バカとなんちゃらは使いよう

33: ◆QZaw55cn4c
12/05/05 03:01:06.57
そりゃそなんだけどさー、ビット演算とか、& | ~ でマスクかけてさくさく書いたほうが、結局楽じゃない?
I/Oのビットを立てたり下げたりするのって、普通こうするじゃん?
いや、C に 0xc6 表現以外にも 「0b11000110」とかあればもっといいんだけどさー。
この前、5bit ごとにデータをシリアル化したい、ていうお題がどこかであったけれども、そのときもビットフィールドを使いたいとか思わなかったなあ。

ここはビットフィールドじゃないとっ、ていうお題があるんだろうか?

34:デフォルトの名無しさん
12/05/05 03:13:04.97
書けるのに読めない人にはわからないことかも

35:デフォルトの名無しさん
12/05/05 03:43:16.00
bool型がどうしたって?

36:デフォルトの名無しさん
12/05/05 05:09:09.58
組み込みでは現役というか定石ですね。
マイコンメーカーが提供しているヘッダファイルにもバリバリ。

37:デフォルトの名無しさん
12/05/05 05:10:37.10
>>32
しかし、クズは使いようもないな。

38:デフォルトの名無しさん
12/05/05 07:20:33.81
>>33
いちいち定数切るのが面倒。

39:デフォルトの名無しさん
12/05/05 07:39:33.82
質問です
n個の配列を作りたいのですが、下のソースでは、int m[n];の行で
constant expected
と言われます。どうしたら良いでしょうか。
SHARPのPC-G850VSです。

main(){
int n = 2;
int m[n];
}

40:デフォルトの名無しさん
12/05/05 07:50:35.47
nはdefine定義しろよ

41:デフォルトの名無しさん
12/05/05 07:56:26.66
>>39
ANSI-Cでは配列宣言の要素数は定数でなくてはなりません。
int m[2];
と書きましょう。

42:はちみつ餃子 ◆8X2XSCHEME
12/05/05 08:04:01.82
ビット単位の操作が必要なケースでレイアウトを気にしないでいいケースっていうのはかなり稀だと思うんだよな。
まぁ、必要っていう人が居るなら要るんだろうけど、レアケースであることにかわりはない。

gcc と vc++ ではビットフィールドを配置する上位下位が逆ってことで一部のライブラリで問題が起こるってことも聞いたことあるし。
gcc にはオプションで vc++ に合わせるモードもあるんだけど、ライブラリとして使う性格上、他のライブラリとの兼ね合いで
一律に逆転してもまずいっていう。 具体的には gtk がそれ。

あと、久々に規格を見直していて気付いたんだけど、ビットフィールドはなるべく詰め込むことが must なんだな。

> 十分な領域が残っている場合、構造体内のビットフィールドの直後に続く別の
> ビットフィールドはは同じ単位の隣接したビットに詰め込まなければならない。
> 十分な領域が残っていない場合、入り切らなかったビットフィールドを次の単位に入れるか、
> 又は隣接した単位の境界をまたがらせるかは、処理系定義とする。
(JISX3010:2003 の 6.7.2.1 から引用)

ここで言う「単位」がバイトのことなのかどうかがわらないんだが、原文ではどーなってんだろ。
いずれにせよ >>8 のような1ビットが8個の状況では1バイトに連続して配置されることが保証されてる。

あと、ちょっと本質的じゃないがビットフィールドの変わり種の使い方として構造体の代入抑制がある。
幅ゼロで const なフィールドがあると代入できなくなるんだと。
struct A
{

const int : 0;
};
てな感じ。

43:NAS6 ◆n3AmnVhjwc
12/05/05 08:20:47.91
DirectXでビットフィールドはバリバリ現役だったりする

44:デフォルトの名無しさん
12/05/05 08:27:22.09
で、貴様らは入門スレで何を話してるんだ
おっさんだろ

45:デフォルトの名無しさん
12/05/05 08:56:49.82
> ANSI-ANSI-Cでは配列宣言の要素数は定数でなくてはなりません。
c言語に限らずこういうのを他の言語でも見かけるが、これって何で?
>>39の例の方が柔軟で良さそうに思えるのだけど。

46:はちみつ餃子 ◆8X2XSCHEME
12/05/05 09:13:36.47
>>45
ローカル変数はスタックに取るのが普通だから、
コンパイル時に配置を決めてしまいたいんだよ。

47: ◆QZaw55cn4c
12/05/05 10:33:19.72
>>36
んー。定石ですか。

48:デフォルトの名無しさん
12/05/05 11:19:57.15
>>46
配置を決めたいのが理由じゃねーよ。
隠れて何かしないってのがCのポリシーだからだろ。
決めなくても実現できるのはわかるよな。

49:デフォルトの名無しさん
12/05/05 11:23:05.84
つーか、c99なら普通にできるだろ。

50:デフォルトの名無しさん
12/05/05 11:24:42.88
前スレでも出たが制限はあるけどな。

51:デフォルトの名無しさん
12/05/05 14:45:42.23
質問おねがいします

for文の中で、下のように10倍、100倍、1000倍、10000倍のような計算を
変数”i ”を使って一つに纏める簡単な方法はありますか?
よろしくお願いします。

for(i = 1・・・


x = x * 10;
-----------ここから下を省略したい--------------------
x = x * 100;

x = x * 1000;

x = x * 10000;

52:デフォルトの名無しさん
12/05/05 14:52:11.70
>>51
この程度がわかんなかったら
後々の学業に支障をきたすレベル
有体に言えば脳障害と見間違う程にひどい


53:デフォルトの名無しさん
12/05/05 14:53:54.19
for (i = 1; i < N; i *= 10)
{
x = x * i;
}

54:デフォルトの名無しさん
12/05/05 14:56:40.57
i *= 10;

55:デフォルトの名無しさん
12/05/05 14:57:15.92
>>52
お前が脳障害だろ。
>>51
まず日本語を勉強しろ。

56:デフォルトの名無しさん
12/05/05 14:57:57.95
>>55
ホンモノの脳障害の糞詰まりのクソ野郎がお出ましかw
巣にこもってでてくんなアホ


57:デフォルトの名無しさん
12/05/05 14:58:11.12
>>52
ごめんなさいorz
プログラムのプの字も知らず、あるきっかけで数日前にC言語というものを触り始めたばかりですorz

>>53
ありがとうございます。
"i*"が味噌なんですね?
ちょっとやってみます

58:51
12/05/05 14:59:27.28
>>55
すみませんどこか日本語おかしかったでしょうか?



59:デフォルトの名無しさん
12/05/05 15:00:03.52
やりたいことと例示している内容が違ってる気がする
32bit整数だとオーバーフローしてるし

60:デフォルトの名無しさん
12/05/05 15:01:36.33
>>51
x = x * 10;
-----------ここから下を省略したい--------------------
x = x * 100;
x = x * 1000;
x = x * 10000;

をそのまま解釈すれば
x = x * 10000000000;
だが、お前がしたいこととは違うんじゃないのか?
日本語ができないならせめて元のコードを示せ。

61:51
12/05/05 15:04:07.61
>>59>>60

ああ、そういうことですか
100億なんて数字は使わないし、計算できないですもんね

本当はこうでしたすみません

x = x * 10;
-----------ここから下を省略したい--------------------
x = x * 100;
x = x * 1000;


62:デフォルトの名無しさん
12/05/05 15:06:06.55
だからそれならx = x * 1000000;
でいいだろが。

63:デフォルトの名無しさん
12/05/05 15:13:42.39
for (i = 10; i <= 1000; i *= 10)
{
x += (x * i);
}

こういうことだろうか

64:デフォルトの名無しさん
12/05/05 15:22:17.36
ここはこの程度と宣う>>52に自分が脳障害じゃないってことを示して欲しいとこだな。

65:デフォルトの名無しさん
12/05/05 15:42:05.10
やべぇw
脳みそにクソが詰まった人間同士がクソの垂れ流しあいをしてるwww
素晴らしいw

相手はズブズブのシロートなんだから
やりたいことくらい察してやれよwww
ンなことだからオマイラは脳みそに怪しい部分をお持ちですね
とか言われんダよww

66:デフォルトの名無しさん
12/05/05 15:42:37.04
もう全部ソースを晒せばいいと思うんだ。

67:デフォルトの名無しさん
12/05/05 15:47:12.87
やりたいことは察してやるのではなく、引き出してやればいいのだ。

68:デフォルトの名無しさん
12/05/05 16:36:13.95
うんこがなんか言ってるな。

69:デフォルトの名無しさん
12/05/05 16:38:18.94
しゃべるクソなんだからしょうがない


70:デフォルトの名無しさん
12/05/05 16:58:04.18
>>51
行き詰まったから質問してるんだろうけど、もっと手前で道を間違ったから行き詰まってるんだよ。
例えて言えばお前の質問は「どうやったらこの道を進めるんですか?」と言ってるようなもんだ。
行き止まりの進み方を聞いたってこっちは知らんがなとしか言えない。 そこは進めない。
「どうやったらxxに行けるんですか?」と聞いてくれれば、 xx がどこか言ってくれれば回答しようがあるんだよ。

要は「自分が行き詰まっているところ」じゃなくて「目的地」を示せってこと。

71:デフォルトの名無しさん
12/05/05 17:14:44.10
日本語でおk

72:39
12/05/05 20:02:31.92
>>48
というと、n個の配列を作る方法はあるのでしょうか。(n=2とは限らない)

73:デフォルトの名無しさん
12/05/05 20:08:19.73
mallocなりcallocでええやん

74:デフォルトの名無しさん
12/05/05 20:08:26.24
>>72
無い
そういう方法は標準では用意されてない
最初に配列の個数を決めたら後で変えることはできない

こういうのを静的配列と呼ぶ
実行時に配列の長さnを変えられるのは動的配列、
Cは動的配列を標準では提供していない
「C 動的配列」で調べれば出てくる


75:デフォルトの名無しさん
12/05/05 20:14:41.58
コテで無能自慢するのが流行りなんかね

76:デフォルトの名無しさん
12/05/05 20:21:28.26
知らなかったの?おっくれてるぅ

77:はちみつ餃子 ◆8X2XSCHEME
12/05/05 20:26:13.72
>>72
C99 ではかなり条件が緩和されてる。
URLリンク(seclan.dll.jp)
ただ、ポケコンだと新しい処理系を使うってのも簡単じゃないだろうし…。
普通は malloc でメモリを確保して使うんじゃないかな。

int main(void){
int n = 2;
int* m = malloc(sizeof(int)*2);
//ここで m を使った処理
free(m); // ←メモリの解放
}

78:デフォルトの名無しさん
12/05/05 20:27:13.18
コテなしの無能発言よりはまし。NGできるコテつきは良心的ともいえる。

79:デフォルトの名無しさん
12/05/05 20:32:00.56
>>78
自己紹介お疲れ様です
これからも駄文の垂れ流し、よろしくお願い致します無能様


80:デフォルトの名無しさん
12/05/05 20:39:01.94
>>78
こういう内容の発言なのに自分がコテ付けてないってのは
かなり自家撞着なアホwww
「わたくし、アホでございます」と宣言してるようなモンだw

81:デフォルトの名無しさん
12/05/05 20:48:44.01
自己紹介はやめろ

82:デフォルトの名無しさん
12/05/05 21:04:27.71
          ____
       / \  /\  キリッ
.     / (ー)  (ー)\
    /   ⌒(__人__)⌒ \   コテなしの無能発言よりはまし。NGできるコテつきは良心的ともいえる。
    |      |r┬-|    |   
     \     `ー'´   /   
    ノ            \
  /´               ヽ
            ___
       /      \
      /ノ  \   u. \ !?
    / (●)  (●)    \ 
    |   (__人__)    u.   | クスクス>
     \ u.` ⌒´      /
    ノ           \
  /´               ヽ
         ____
<クスクス   /       \!??
      /  u   ノ  \
    /      u (●)  \
    |         (__人__)|
     \    u   .` ⌒/
    ノ           \
  /´               ヽ

83:デフォルトの名無しさん
12/05/05 22:42:35.88
>>51
同じく初心者が頭振り絞って考えたけど
こういう事かな?

#include <stdio.h>

int main()
{
int x;
int i;
int j=10;

printf(" 整数を入力\nx=");
scanf("%d",&x);


for(i=0; i<=3; i++)
       {
        x = x*10;
        printf("x * %d = %d\n", j,x);
        j=j*10;
       }
return(0);
}


84:デフォルトの名無しさん
12/05/05 22:47:44.92
GNUスタイルは久々に見た
初心者向けの本やサイトでそのスタイルは余りにも見かけない
本当に初心者なのかが疑問に残る
初心者が何もせずに何も見ずにそのスタイルに行きついたなら
ある種の教祖的な素質がある


85:はちみつ餃子 ◆8X2XSCHEME
12/05/05 23:02:00.16
>>84
へぇー。 手元にある本をざっと見たら確かにその通りだわ。
でも、俺も昔は >>83 みたいに書いてた。
初心者的には括弧の位置が対応してた方が安心できるんじゃないかなぁ。
エディタの支援がある状況だとちゃんとインデント付けてくれるけど、
初心者はそれに慣れてないわけだし。

86:デフォルトの名無しさん
12/05/05 23:17:37.35
最初に使ったコーディングエディタがEmacsでショーも無い書籍を避けて進化すれば素養も昔は書いてたもクソもないよ

87:デフォルトの名無しさん
12/05/05 23:22:42.18
日本語でおk

88:39
12/05/05 23:23:16.24
>>73,74,77
有難うございます。とても勉強になります。
私は取り敢えず入門書を大体読み終えたのですが、まだまだですね…
以下のソースでテストしてみたところ上手く動作したので、今自分の作りたいものを作れそうです。

main(){
int n = 2;
int *m = malloc(sizeof(int)*n);
*m = 1;
*(m +1) = 3;
printf("%d, %d",*m,*(m+1));
}

89:はちみつ餃子 ◆8X2XSCHEME
12/05/05 23:27:57.12
>>86
因みに俺が最初に C のコーディングに使ったエディタは Vz だったよ。
教員もめんどくさいから最近だと VC++ 選ぶと思うけどな。
C の初心者に Emacs から指導するのは手間なだけだろ。


90:39
12/05/05 23:28:20.64
free(m);
忘れてました

91:はちみつ餃子 ◆8X2XSCHEME
12/05/05 23:29:00.84
>>88
free するかどうかの議論がまた始まるよー。

92:デフォルトの名無しさん
12/05/05 23:39:40.17
for( P=Root, Last=NULL; P != NULL; Last=P, P=P->Next )

この手のfor分は行数ケチスタイル?


93:デフォルトの名無しさん
12/05/05 23:45:01.47
そんな変なの見たことねぇ。

94:デフォルトの名無しさん
12/05/05 23:45:41.53
うん

95:はちみつ餃子 ◆8X2XSCHEME
12/05/05 23:48:18.69
>>92
意味的にループのための初期化、判定、インクリメントになってるなら、
ケチとかどうとか言う類のものじゃないと思うけどな。
俺はアリだと思うし、実際に書くよ。

96:デフォルトの名無しさん
12/05/05 23:57:19.78
リークの意味がわかってないアホにはうんざり

97:デフォルトの名無しさん
12/05/05 23:58:17.23
それはコードゴルフスタイル

98:デフォルトの名無しさん
12/05/06 00:00:21.67
LastとRootの語をどう使い分けてんのかわけわからん

99:デフォルトの名無しさん
12/05/06 00:19:46.98
とりあえず変数名を大文字で始めるのは気持ち悪い

100:デフォルトの名無しさん
12/05/06 00:36:28.99
気持ち悪いね

101:デフォルトの名無しさん
12/05/06 00:37:16.01
キャメルケース
アッパーキャメルケース
ローワーキャメルケース
スネークケース

あなたはどれ?

102:デフォルトの名無しさん
12/05/06 00:46:42.90
レッドスネークカモン

103: ◆QZaw55cn4c
12/05/06 00:48:36.65
>>84,85
pascal の begin / end の段付けを意識した書き方だとこうなるよね。

104: ◆QZaw55cn4c
12/05/06 00:49:54.57
>>88,91
おっと信者の出番がきましたか霧

105: ◆QZaw55cn4c
12/05/06 00:51:03.93
>>96
勝手にリークを定義されても霧

106:デフォルトの名無しさん
12/05/06 00:51:19.83
質問おながいします

unsigned int abc;


この変数の中身を指定したビットだけ取り出したり操作したりするのはどうすればいいのでしょうか?
例えば、abc = 0b0000000000000000 として、10ビット目だけを反転したり取り出したりしたい場合です。
よろしくおながいします

107: ◆QZaw55cn4c
12/05/06 00:53:06.28
>>101
ごめんなさい。もしよろしければそれぞれ教えてください。


108: ◆QZaw55cn4c
12/05/06 00:55:24.72
>>89
demacs が遅くて Vz も便利に使ってたけど、どこぞのemacsバインドマクロを早々にいれちゃったなあ。


109:デフォルトの名無しさん
12/05/06 00:57:56.53
>>106
URLリンク(www.google.co.jp)

110:デフォルトの名無しさん
12/05/06 00:58:51.17
んげ ロケール情報までURLに・・・糞Googleが

111: ◆QZaw55cn4c
12/05/06 01:06:03.88
>>106
URLリンク(codepad.org)
最小のビットを 0 として大きい方向に1, 2, 3, ... 10 と数えたときの10番目です。
最小ビットを 1 から開始するときは mask = 1 << (10-1) にしてね

112:デフォルトの名無しさん
12/05/06 01:09:25.07
>>107
ローワーキャメル lowerCamel
アッパーキャメル UppterCamel
スネークケース snake_case

キャメルケースはローワーやアッパーのジャンル名だった。 めんご

113:デフォルトの名無しさん
12/05/06 01:10:44.82
へぇ
google様はロケール情報まで付け足してくれるのか
こりゃあいいこと知ったw
ありがとうありがとう
さっそく情報抜き出すよ!


114:デフォルトの名無しさん
12/05/06 01:13:30.53
#define GETBIT(a,b) ((a)&(b��1)?1:0)
#define XORBIT(a,b) (a)^=(1<<(b��1))

int main(void)
{
unsigned int abc=123;
int bit;
XORBIT(abc,10);
bit=GETBIT(abc,10);
return(0);
}


115:デフォルトの名無しさん
12/05/06 01:19:04.69
なんだその・は。

116:デフォルトの名無しさん
12/05/06 01:41:51.19
彼の脳内にしか存在しえない
素晴らしい演算記号なのだろう
きっと


117:デフォルトの名無しさん
12/05/06 01:51:20.12
>>115
iPhoneだとゲタに見える
文字コードいくつの文字なんだろ

118:デフォルトの名無しさん
12/05/06 01:52:53.96
これじゃね?


119:デフォルトの名無しさん
12/05/06 01:57:11.76
114です。
マイナス(-)のつもりが全角で化けてたみたい、すまん。

それと
#define GETBIT(a,b) ((a)&(b-1)?1:0)

#define GETBIT(a,b) (((a)&(b-1))?1:0)
の方が良いのですね。


120: ◆QZaw55cn4c
12/05/06 02:02:00.60
>>119
不精せずにcodepad 等で動かしてみれば?

121:106
12/05/06 03:00:44.55
みなさんレスありがとうございます
とりあえず、>>111さんのコードに変数 x を追加して、

x = a & mask;
if(x == 0){printf("10th = 0");}
if(x > 0){printf("10th = 1");}

これでやりたいことができました。
C言語をかじって1ヵ月しかないですが、このスレでは質問すれば有用な返答が頂けて感謝しています。
どうもありがとうございます。



122:デフォルトの名無しさん
12/05/06 04:34:36.13
>>121
下のif分はelseにまわした方がよくないか?
というか111がやってるのと逆のシフトを行えば
ifすらいらないぞ

123:デフォルトの名無しさん
12/05/06 06:23:57.73
別にシフトすら要らないぞ。
printf("10th = %d\n", !!(a & mask));

124:デフォルトの名無しさん
12/05/06 06:27:00.01
printf("10th = %d", (a >> n) & 1);

125:デフォルトの名無しさん
12/05/06 12:43:15.68
すいません(つA`)教えてください。
int a,b;
dobule c;
a = 7;
b = 4;
c = b / a;
と書いたのですが、
%f表記でも、cに値が入っていません。
使っているcは、オブジェクティブcなのでスレチかもしれませんが、教えていただけると助かります。

126:デフォルトの名無しさん
12/05/06 13:08:02.71
c言語はよくしらないけど
c = (double)a / (double)b;
じゃないの?

127:デフォルトの名無しさん
12/05/06 13:15:14.09
>>126
ありがとうございます。
早速試してみます。助かりました。

128:デフォルトの名無しさん
12/05/06 14:11:17.74
お礼なんていらないよ

129:デフォルトの名無しさん
12/05/06 14:11:43.53
>>126
キャストは一つだけで十分
URLリンク(codepad.org)

130:デフォルトの名無しさん
12/05/06 22:33:24.41
Cソースに、関数内に特定の文字列が入っているかどうかを検索し、リストアップできるツールって知ってますか?教えてえらい人。

131:デフォルトの名無しさん
12/05/06 22:39:35.34
>>130
>Cソースに、関数内に特定の文字列が入っているかどうか
これ、だいぶぼやっとしていて、何がしたいのかよくわからないが、、、。
grepとか範囲内検索では足りないのかな?

具体的に例を上げてくれれば、レスもらえるかも。

どっちにしてもCの話ではなさそうだが、、、。

132:デフォルトの名無しさん
12/05/06 22:43:01.00
質問があります。
ディレクトリの監視をするのに、inotifyだと、inotify_eventのnameに監視してるファイルを作成/削除/変更
したファイルの名前が入ってると思うのですが、kqueueの場合は、どのように監視しているファイル名を
取得すればよいのでしょうか?

よろしくお願いします。

133:デフォルトの名無しさん
12/05/06 22:45:42.96
>>131
例えば秀丸だと、grepでは、ソースファイル名とライン数はわかるけど、grepした文字列がどの関数にはいっていたかどうかは、grep先を目視しないとわからないですよね。
私は、ある文字列が、どの関数にある、ということをそういった手間をかけないで調べたいのです。

134:デフォルトの名無しさん
12/05/06 22:59:37.87
>>133
>文字列がどの関数にはいっていたか
その「文字列」って具体的に何?

スタック変数なら、関数内だから無関係だよね。
グローバル変数なら、カプセル化がヘボすぎて、管理できなくなってるだけの気がするが。
リストアップしたくなる時点で設計が良くない気がする。

それ以外の文字列なら、用途が想像できない。

135:デフォルトの名無しさん
12/05/06 23:13:26.33
まァやるとしたらperlでやるけどね、
どちらにせよ関数の中の変数名を調べたいってのは
プログラミングとしては末期症状だとは思う
そういうのが必要になる状況てのは
かなり切羽詰まっている、
有体に言えばそのソースコードはクズでしょう、捨てなさい


136:デフォルトの名無しさん
12/05/06 23:17:33.31
シングルスレッド前提で書いてたコードをマルチスレッド対応に書き直しとか
関数の仕様が変わったので書き直しとかかね

137:デフォルトの名無しさん
12/05/07 01:02:14.28
>>133
秀丸は関数一覧を表示していれば、検索でヒットした部分を含む関数もハイライトしてたよ。
grepではどうなるかわからないけど。

138:デフォルトの名無しさん
12/05/07 08:11:14.02
>>133
関数/変数ならクロスリファレンサを使えばいい。
ここまでその名前が出てきてないのにびっくり。
カスばかりだな。

139:デフォルトの名無しさん
12/05/07 08:32:35.16
本来なら不必要だから。

140:デフォルトの名無しさん
12/05/07 08:35:32.45
>>138
何がしたいのかも分かってないのに偉そうな奴だな
察したのか?

141:デフォルトの名無しさん
12/05/07 09:27:17.12
日本語も理解できないカス>>140

142:デフォルトの名無しさん
12/05/07 11:13:36.95
柴田望洋さんと猫でもわかるプログラム読んだけど、なんか極端すぎます・・・
この中間ぐらいの本や、サイト探しています
誰か知りませんか?

143:デフォルトの名無しさん
12/05/07 11:22:00.49
何を紹介したって極端だと言うんだろ?

144:デフォルトの名無しさん
12/05/07 11:38:22.56
大学が公開してるPDF読めば?

145:デフォルトの名無しさん
12/05/07 12:37:25.97
>>142
知りません
>>143
うん
>>144
うん

146:デフォルトの名無しさん
12/05/07 21:50:41.84
>>142
「苦しんで覚えるC言語」とかどう?
URLリンク(9cguide.appspot.com)

「C言語ポインタ完全制覇」も躓き安いところを抑えてある。
下のページを見て興味が湧いたら、どうぞ。
URLリンク(kmaebashi.com)

147:デフォルトの名無しさん
12/05/07 23:02:33.27
Cでinterfaceってどう書くの? 純粋仮想関数的な書き方ってある?


148:デフォルトの名無しさん
12/05/07 23:04:20.63
関数ポインタでごにょごにょ

149:デフォルトの名無しさん
12/05/07 23:09:24.14
どう書くの?って言うのは単にCでインターフェースっぽい動作をさせたいだけなのか
C++とバイナリー互換を持たせて相互運用したいのかによって変わると思う。

150:デフォルトの名無しさん
12/05/07 23:21:48.75
>>149
すげ レスはや。 thx C++とは関連なかとです。
typedef struct _CAGE{
void (*hoge)(....);  // = 0; とか入れたいところだが無理か w
int (*hage)(....);
} _CAGE;
こんなのを次のクラス宣言に取り込めばええだけかな?


151: ◆QZaw55cn4c
12/05/07 23:44:00.58
>>147
インターフェースは、多重継承をやりたくないけれども完全排除もしたくない、というジレンマの上にある妥協の産物。
継承の仕様の一部に制限をかけただけのもの。

C でインターフェースを書くということで、一次近似できたとしても、「制限をかける」ことはできないのでは?
制限なしなんでもありのCにインターフェースとかはなじまない。

152:はちみつ餃子 ◆8X2XSCHEME
12/05/08 00:12:05.27
実用を考えているならやめておいた方がいいとは思うよ。
インターフェイスがどう実装されているかを考察するとかなら
あえて C でやってみるのもいいんじゃない?
わかっている人から見れば不毛だろうけど。

153:デフォルトの名無しさん
12/05/08 00:36:31.39
クズとうんこの罵り合いか。

154:ビル・ジョブス
12/05/08 03:15:21.64
無理矢理、externで宣言/ダミー呼び出しすればリンクエラーには出来るかもしれない。
関数全体をマクロに閉じ込めれば出来なくも無いが可読性最悪。
大昔のC++コンパイラが中間生成するCみたいな。

155:デフォルトの名無しさん
12/05/08 04:04:34.32
>>146
苦Cはダメになるぞ。

156:デフォルトの名無しさん
12/05/08 06:32:55.55
>>151,152,154 おは レス thx
やはりそうなりますか。未実装を検出できなければインターフェースの意味がないもんね w
継承でやります。stateやcompositeやら書いていたらインターフェースで管理したくなってつい不毛な... w
C++? Cortex-M3で、OO利用バイナリを最小にしたいのでちょっと...。


157:デフォルトの名無しさん
12/05/08 10:08:48.83
チェックマクロかませればいいだけじゃん。

158:デフォルトの名無しさん
12/05/08 12:00:48.44
>>157
assertの事? 入れてるよ w
アグリゲート等の使う側の話じゃなくて、管理の話。 構造体系にも関係するかも?
Mavenの方々 thx


159:デフォルトの名無しさん
12/05/08 12:03:24.04
なんだ構造体系て。
別にassertでもなんでもいいが、未実装の検出が目的じゃねーのか。

160:デフォルトの名無しさん
12/05/08 12:56:21.38
URLリンク(www9.plala.or.jp)
にある
char st[10]="ABC";
p1=st

とあり、p1=stについて
これを「ポインタpはSTを指す」という&stではないことに注意とあるのですがよくわかりません。

printf("%p %p\n", &st, st);
すると同じアドレスが表示されました。
どう違うんでしょうか?

161:デフォルトの名無しさん
12/05/08 12:56:57.46
型が違う。

162:デフォルトの名無しさん
12/05/08 13:34:19.80
Shinayama Programming Change Compilerって何ですか?

163:デフォルトの名無しさん
12/05/08 14:51:00.00
>>162
俺にきくなよ
知らないっていってるだろ

164:デフォルトの名無しさん
12/05/08 15:44:25.25
>>151
インターフェイスって多重継承の道を突き進んだ延長上にあるものだぞ
それこそ Cargill が背理法として持ち出した「馬鹿げた想像」が皮肉にも現実化したもので

# 本番稼働で ((void)0) になるだけなものを使って何がしたいんだろうね

165:デフォルトの名無しさん
12/05/08 16:05:27.27
C言語であることとインターフェースを使った設計が必要であるかは
全く別問題な気がする。
C++やJavaみたいなオブジェクト指向言語でインターフェースを使った設計が
広く使われているって事はC言語しか使えない環境でインターフェース的なことをやりたい
欲求も当然あるんじゃ無いかな
C言語でインターフェースの型情報を持てないのは、言語使用としてサポートしていないと言うだけで
それを実装できないというわけでは無いと思う。
例えばインターフェース型の構造体に静的に宣言された型識別子を割り当てて管理することも出来る。
当然可能であればC++で書いた方がよっぽど楽って事にはなると思うけど。

166:デフォルトの名無しさん
12/05/08 16:07:20.36
>>160
そこもダメになるサイト。「ポインタp1はstを指す」のではなく、stの先頭要素を指している。
つまり、stは配列そのものではあるが参照されると先頭要素を指すポインタ型になる。
&stとした場合はstは配列だから当然に、配列を指すポインタ型になる。
そのサイトを書いた奴はその辺りを判っていないと思われる。


167:デフォルトの名無しさん
12/05/08 16:19:20.87
>>160
例えばそこのページの最後にある、
>このとき str == str[0] == &str[0][0]
はナンセンス。
str[0]と& str[0][0]は型が等しいから比較できるが、strは型が違うので比較しても意味が無い。
敢えて比較したいのならば、(void *) str == (void *)str[0]とするべき。
言葉で書くなら、strとstr[0]は(型は違うが)アドレスは等しくなるとするか。

そもそも、初心者は「アドレスの概念を強いられているんだ!」と怒ってもいい。

168:デフォルトの名無しさん
12/05/08 16:34:59.80
なんのこっちゃ。

169:デフォルトの名無しさん
12/05/08 16:37:08.22
C言語を強いられているんだ!
的な?

170:デフォルトの名無しさん
12/05/08 17:09:11.84
やばい、つまんないこと書き込んでたらご飯のスイッチ入れる忘れてた

171:uy
12/05/08 17:54:57.30
>>170 しねよくず

172:デフォルトの名無しさん
12/05/08 18:15:44.09
言語解析(コンパイラ)の授業大学でやってるけど、さすがに
Cのアルゴリズムコード出して試験はしないよね?

オートマンとか、左再帰とかそういうのしかやってない....


173:デフォルトの名無しさん
12/05/08 18:21:09.82
おっ盛り上がってるな!
>>164
純粋仮想関数をnewすると実行でアサーションエラーになります。 使う話で恐縮だが。
それでも、インターフェース機能が存在するのは、マストな存在だからです。
チップ組込みも肥大化しつつありますが、それに増してPC上でビッグプログラムを開発すると、
構造設計段階での有難みが身に染みます。
しかし...、CでのOOPは慣れれば快適 w
もちろん、メッセージドリブン、イベントドリブンや仮想関数テーブルのライブラリを完成させてからの話だが w


174:デフォルトの名無しさん
12/05/08 18:30:51.79
このスレ見てると、単なるCの文法の話なのか、ソフトウェアやネットワークと
C言語の関連の話なのか全然分からない。

175:片山博文MZボット ◆0lBZNi.Q7evd
12/05/08 18:33:05.07
>>165 ReactOSでC言語でCOMオブジェクトを実装しているのは見たことある。

176:デフォルトの名無しさん
12/05/08 18:35:31.36
C言語でインターフェース作らなくても、javaにあるんだからそれ使えばいいじゃん。
既成機能のほうが優れているし早いんじゃないの?

177:デフォルトの名無しさん
12/05/08 18:37:13.33
>>173
お前はいったい何が言いたいんだ。
日本語に不自由なのか?

178:デフォルトの名無しさん
12/05/08 18:40:26.15
C言語の知識深すぎる人ここ多いけど、そんだけ知識あるなら
エンジニアでもなればいいのに。



179:デフォルトの名無しさん
12/05/08 18:43:23.54
高級言語って機械語を指示する言語なんだから、理論的には
他言語の機能だって、あらゆる手段を組み合わせて実装できるんじゃないの?

180:デフォルトの名無しさん
12/05/08 18:48:41.96
別に実践的になんでも実装できるがどうかしたか。

181:デフォルトの名無しさん
12/05/08 18:55:01.76
高級言語で機能実装したら絶対スピード遅くなるだろ。

182:デフォルトの名無しさん
12/05/08 19:05:22.94
今時のCコンパイラより速く書くのは大変だぞ?

183:デフォルトの名無しさん
12/05/08 19:10:57.76
>>178
医者なんで... 今日は非番。


184:164
12/05/08 19:18:18.01
>>173
それはもしかして C++ の話?
だとすると純粋仮想関数は new できないんだが・・・
# スレチすまそ >ALL

> CでのOOPは慣れれば快適
ここは同意
C しか知らないと他の言語を漁りに行く動機がなかったりなw
# 知人にいるんだこれが

185:デフォルトの名無しさん
12/05/08 19:32:27.61
このスレ絶対初心者スレじゃない。
東大生でも理解できんぞ。

186:デフォルトの名無しさん
12/05/08 19:34:34.73
上級者ほど理解できないとも思うがw

187:デフォルトの名無しさん
12/05/08 19:34:44.53
C言語なら俺に聞け(応用編)って作ればよくね?

188:デフォルトの名無しさん
12/05/08 19:43:14.48
上級者は次元が違うってか?
馬鹿よせよ。

C言語のコーナーじゃ文法の本がほとんどじゃ。
俺の知ってるC言語じゃない!

189:デフォルトの名無しさん
12/05/08 19:44:46.53
俺の知ってるC言語じゃない! (このスレはね。)



190:デフォルトの名無しさん
12/05/08 19:45:40.70
専門的な奴でも、親切に噛み砕いて教えてくれる人と、
自分本位で専門知識ひけらかすアホがいるよな。

191:デフォルトの名無しさん
12/05/08 19:46:33.09
まったく、どうしてアホはこうも傲慢なのかね。

192:デフォルトの名無しさん
12/05/08 19:50:09.67
インテリ傲慢は講師になるなよ

193:デフォルトの名無しさん
12/05/08 19:51:46.67
難しい事でも噛み砕いて教えてくれる本があれば、1万ページでも
1か月で読める。

194:デフォルトの名無しさん
12/05/08 20:02:55.58
K&R をガチ幼稚園児を前提に書くと何ページくらいになるかな

195:デフォルトの名無しさん
12/05/08 20:03:36.85
いい加減、つまらんから間抜けなことばかり言うのよせや。

196:デフォルトの名無しさん
12/05/08 20:05:16.61
その言葉、そっくり返すぜ
C の話をしろや

197:デフォルトの名無しさん
12/05/08 20:06:30.26
アホは黙ってろよ。

198:デフォルトの名無しさん
12/05/08 20:07:49.76
親しみにくいからソフトウェア離れが増える。
あまりに基礎技術が進みすぎると誰もやりたいと思わん。

そういう意味で90年代後半のほかほかITブームの流れにのったやつは運がいいよな。


199:デフォルトの名無しさん
12/05/08 20:13:12.88
プログラマーとかなりたいやつ皆無だろ。
汗流すほうが健康にもいいし楽しい。

200:デフォルトの名無しさん
12/05/08 20:20:58.12
全く雇用が守られてないからな
文理不問で学歴不問で未経験者OKで
数年毎に新しい技術が出てきて蓄積が無意味になるんじゃ
若くて素直で人件費の安い奴隷が優先されてコストのかかる頑固な年寄りは切られるよ
その方が企業にとって都合がいいからそういうシステムになってるんだろうね全く人間がモノ扱いだよ

201:デフォルトの名無しさん
12/05/08 20:22:37.77
プログラマーはつまらんよ
趣味で好き勝手やるのが一番

202:デフォルトの名無しさん
12/05/08 20:33:21.85
好き勝手は別に趣味でなくてもできるぞ
かみ砕いてやると創造性の発揮というやつだ
これができない奴は PG 以外でも結局同じこと

203:デフォルトの名無しさん
12/05/08 20:35:38.37
>>197

204:デフォルトの名無しさん
12/05/08 20:44:44.92
ブーメランw

205:デフォルトの名無しさん
12/05/08 20:57:35.76
ここ 入門スレじゃない

206:デフォルトの名無しさん
12/05/08 21:15:28.53
すみません、質問です。

URLリンク(codepad.org)

のコードが、コンパイラによって処理が出来たり出来なかったりします。
これは、このプログラムのなかに問題があるのか、それともコンパイラ側に問題が有るのでしょうか?

因にコンパイラはandroidアプリのc4droidとc/c++コンパイラです。
前者では失敗(十進数では~の下りが表示されない)、後者では成功しました。

プログラムが汚いのはスマートフォンで組んだからです。お許しを。

207:デフォルトの名無しさん
12/05/08 21:18:37.50
よくわからんがcontを初期化しないで使ってるな

208:デフォルトの名無しさん
12/05/08 21:19:22.97
あ、良いのかなスマン、スルーしてくれw

209:デフォルトの名無しさん
12/05/08 21:22:39.03
>>207さん
ありがとうございます!
あんな事に気づけないとは...
下らない質問失礼しました。


210:デフォルトの名無しさん
12/05/09 00:40:35.47
QをNGにするとすっきりするよ

211:デフォルトの名無しさん
12/05/09 01:42:57.87
#defineについてお聞きしたいことが御座います。
とある環境のソースを別の環境で移行する為に、変数の値の置き換えを行いたいです。
Aプロジェクトで「Mouse.Trg&_lMOUSE」と書いているソースを、
Bにて「System.touch.trgFlag」で呼び出せるようにしたいです。

#define Mouse.Trg&_lMOUSE System.touch.trgFlag
#define Mouse.Py System.touchPos.y
と書いてみたのですが「Mouse.Trg&_lMOUSE」の「.」と「&?」が原因でエラーが出てしまっております。
このようなことはできないのでしょうか。

警告 warning: missing whitespace after the macro name
エラー error: expected primary-expression before '.' token

212:はちみつ餃子 ◆8X2XSCHEME
12/05/09 01:48:49.24
>>211
マクロ名は「識別子」であり、識別子として有効でない名前を指定することは出来ない。

213:デフォルトの名無しさん
12/05/09 01:51:22.00
>>211
日本語がわからんがきっとこんな感じか。
#if PROJECT_A
# define MouseLButton() (Mouse.Trg & _lMOUSE)
#elif PROJECT_B
# define MouseLButton() System.touch.trgFlag
#endif

214:はちみつ餃子 ◆8X2XSCHEME
12/05/09 01:54:29.41
識別子についての詳細はこれ。
URLリンク(freedeai.180r.com)

215:デフォルトの名無しさん
12/05/09 01:55:14.23
皆様、ご回答ありがとうございます。
やはりこのようなことは#defineでは出来ないのですね・・・。

>>213
アドバイスありがとうございます。
その場合、両方のソースでMouseLButton() に置き換える感じなのでしょうか?
変数だけで指定することが出来ない場合、その方法を使用させて頂くかもしれません。

ありがとうございます!

216:デフォルトの名無しさん
12/05/09 02:01:35.24
>>215
Bでstruct Mouoseを用意して適当に値を詰めるって手もあるが。

217:デフォルトの名無しさん
12/05/09 02:02:02.29
ないな。

218:デフォルトの名無しさん
12/05/09 02:02:38.83
お前がな。

219:デフォルトの名無しさん
12/05/09 11:39:17.60
「return 0;」と「return (0);」の記述の仕方見るんで
違いやどっちがより正しいとかでもあったりするのかちょっと気になって
検索で調べたんだけどこれと言って見つけられないんだけど
何か知ってる人いるかな?

220:デフォルトの名無しさん
12/05/09 11:41:28.71
文法上括弧は不要。
つけてるのは勘違いしてる間抜けだけ。

221:デフォルトの名無しさん
12/05/09 11:49:12.28
return 0; は普通。
return (0); は神経質。
return(0); はおっちょこちょい。

222:デフォルトの名無しさん
12/05/09 12:21:20.58
retrun(0); は救いようがない。

223:デフォルトの名無しさん
12/05/09 12:36:29.83
#define retrun return

224:デフォルトの名無しさん
12/05/09 12:48:18.84
void retrun(int x);
が死ぬ。

225:デフォルトの名無しさん
12/05/09 13:27:17.23
>>219
"カーニハン リッチー return"
を検索

「K&R (第1版) でも return 文の後の式を括弧で囲っていた(中略)
if/while/swtich のように、他の式を一つ取る構文は全て () が必須なのだから、return もある方が自然」(?)
URLリンク(blog.kmckk.com)

226:はちみつ餃子 ◆8X2XSCHEME
12/05/09 17:45:00.00
>>225
alohakun かwww

227:デフォルトの名無しさん
12/05/09 18:22:58.01
フリーのcコンパイラっていろいろあるみたいですけど
おすすめとかってありますか?


228:デフォルトの名無しさん
12/05/09 18:27:10.07
>>227
WindowsならVisualStudio Express(C++)
MacOSXならXcodeフリー版
その他Unix系OSならgcc

でおk

229:227
12/05/09 18:40:21.19
ありがとうございました


230:デフォルトの名無しさん
12/05/09 23:23:22.31
いえいえ

231:デフォルトの名無しさん
12/05/10 01:20:40.21
フリーのcコンパイラ

Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland

Digital Mars Compiler Version 8.42n
Copyright (C) Digital Mars 2000-2004. All Rights Reserved.
Written by Walter Bright www.digitalmars.com/ctg/sc.html

Open Watcom C/C++32 Compile and Link Utility Version 1.9
( Open Watcom C32 Optimizing Compiler Version 1.9 )

232:デフォルトの名無しさん
12/05/10 01:23:08.33
フリーのcコンパイラ

License
LCC is free for personal use ...

LCC (compiler) - Wikipedia

233:デフォルトの名無しさん
12/05/10 01:34:28.92
日本語つかえるのか?

234:デフォルトの名無しさん
12/05/10 01:34:37.88
これでいいだろ。
URLリンク(codepad.org)

235:デフォルトの名無しさん
12/05/10 07:41:16.21
ワロス

236:デフォルトの名無しさん
12/05/10 08:09:18.65
C machineはもう公開してないんだな。

237:濡鼠
12/05/10 11:39:31.82
はじめまして。
今、H8マイコンでC言語を勉強しているのですが、
実際に現場で使うのでしょうか?

238:デフォルトの名無しさん
12/05/10 11:51:18.37
VisualC++での話ですが、コードを書いてデバッグなしで開始で実行
した際に、消したにも関わらず、一回前に書いたコードが何故か実行され、新しく書いた
方が実行されません。何故でしょうか?

239:デフォルトの名無しさん
12/05/10 11:55:24.98
いっぺんくりーんしてみろ

240:デフォルトの名無しさん
12/05/10 12:29:33.18
>>238
プログラムの使い方はスレ違い。
C++の話でもスレ違い。
ビルド失敗したんじゃないの?

>>237
現場でH8を使うかどうかはスレ違い。
H8の開発現場でCを使うかどうかもスレ違い。

241:デフォルトの名無しさん
12/05/10 12:35:49.11
H8は生産が終わったので今更やっても無駄
現場じゃ使えない
せめてSH-2かARM系

242:デフォルトの名無しさん
12/05/10 12:50:47.32
>>237 使うぞ
>>241 C言語の勉強と書いてあるじゃないか。 H8かどうかなんて関係無い。 よく見てレスしろ! カス!


243:デフォルトの名無しさん
12/05/10 13:09:38.35
うるせーカスだな。

244:デフォルトの名無しさん
12/05/10 13:59:43.43
もう手に入らないものの勉強したってしょうがないのにね

245:デフォルトの名無しさん
12/05/10 14:04:53.78
へえ

246:デフォルトの名無しさん
12/05/10 14:31:38.73
ふーん

247:デフォルトの名無しさん
12/05/10 14:37:16.46
ルネサスも品種減らしたいので統合前の製品を色々切ってるんだよな
H8じゃなくH8Sなどならまだしばらく売るだろうけどね
量産なら一円でも安いものを選択するだろうが
入門なら後々まで役に立つものを選びたいね
RXはかなり微妙だったが…

248:デフォルトの名無しさん
12/05/10 15:25:24.07
ふう

249:デフォルトの名無しさん
12/05/10 17:42:06.72
そういえば VAIOのキーボードコントローラー 
IO EXPANDERに H8S2149使ってたな~

250:デフォルトの名無しさん
12/05/10 21:55:11.28
C言語のプログラム全部提出しないと単位くれないって鬼畜なん?

251:デフォルトの名無しさん
12/05/10 22:02:11.36
そんな学校入るなよ

252:デフォルトの名無しさん
12/05/10 22:21:30.23
必修単位ならどうせ簡単な問題だろ

253:デフォルトの名無しさん
12/05/10 22:26:40.97
C言語のおかげで留年しましたよ。
本当に恐ろしいわ。

254:デフォルトの名無しさん
12/05/10 22:31:46.75
>>194
数学の参考書で一行ごとに丁寧な説明があるのとかあるが
C言語の解説書もそうして欲しいよなww

馬鹿馬鹿しいと思うことでもビギナーにとっちゃ永遠に分からない事かもしれんし。

255:デフォルトの名無しさん
12/05/10 22:54:22.59
C言語に触れて、初めてプログラミングっておもしれぇって思った

256:デフォルトの名無しさん
12/05/10 22:57:00.53
と同時にめんどくせえって思った

257:デフォルトの名無しさん
12/05/10 23:43:29.11
C言語に触れて、
・彼女が出来ました!
・宝くじがあたりました!
・昇進しました!
・道端で500円を拾いました!


258:デフォルトの名無しさん
12/05/11 04:27:39.32
K&Rってどうなの?

259:デフォルトの名無しさん
12/05/11 07:20:52.42
KuriとRisu ?

260:デフォルトの名無しさん
12/05/11 07:47:59.16
>>244
C言語の勉強でH8をたまたま使っているだけだろ。
それともなにか、C言語は手に入らないってこと言ってるのか?w

261:デフォルトの名無しさん
12/05/11 08:54:45.98
IDE無かったら絶対に再帰なんてトレース出来んかったわ。

262:デフォルトの名無しさん
12/05/11 08:59:31.53
IDEの意味知ってる?

263:デフォルトの名無しさん
12/05/11 09:15:05.25
ハードディスクだろ?

264:デフォルトの名無しさん
12/05/11 09:43:42.58
SASI/SCSI/IDE

265:デフォルトの名無しさん
12/05/11 09:46:49.88
しょーもねーやつだな。

266:デフォルトの名無しさん
12/05/11 22:10:49.93
だなw。

267:デフォルトの名無しさん
12/05/11 22:55:42.98
Integrated Development Environment

268:デフォルトの名無しさん
12/05/11 23:45:59.08
>>206で下らない質問をした者ですが、またも質問です。

URLリンク(codepad.org)

がvisual c++2010では実行できて、Tiny C compilerを利用したIDE(学習用c言語開発環境)では実行できません。

具体的には、37行目からのprintf文に問題があるようですが、その警告文がよくわからないです。

警告文:unknown escape sequence: '��x81'

どなたか宜しくお願いします。



269:デフォルトの名無しさん
12/05/11 23:53:18.43
全角空白

270:デフォルトの名無しさん
12/05/11 23:59:09.98
さいきんのコンパイラさんは全角スペースも半角スペースに変換してくれるのかい?(" "内の全角スペースを除いて)

271:デフォルトの名無しさん
12/05/11 23:59:28.13
全角空白を消して実行しましたが変わりませんでした。
そもそもエラーが起きるのが37行目なので全角空白にも問題はあると思いますが、解決にはなってないみたいです。すいません。

272:261
12/05/12 00:02:35.50
>>271は261です。

273:268
12/05/12 00:02:54.53
>>271は268です。

274:デフォルトの名無しさん
12/05/12 00:06:00.59
>>271
時々あるのが、エディタ上の文字エンコーディングの設定によるエラー

275:デフォルトの名無しさん
12/05/12 00:06:12.45
メンドクセーから
コマの名前全部アルファベットにしろ
FuとかOuとか


276:デフォルトの名無しさん
12/05/12 00:12:34.31
そこで再帰ですよ。

277:デフォルトの名無しさん
12/05/12 00:13:11.40
にゃ?

278:268
12/05/12 00:16:25.54
もう少し考えてだめだったらアルファベットにします。
ありがとうございました。

279:デフォルトの名無しさん
12/05/12 00:19:21.54
再帰の宿命はよ

280:デフォルトの名無しさん
12/05/12 00:20:07.86
にゃにゃ?

281:デフォルトの名無しさん
12/05/12 00:36:50.30
>>278
問題は31行目と54行目。
puts("------------------------");
に変えれば解決する。


282:デフォルトの名無しさん
12/05/12 00:37:20.83
>>278
いえいえ
お礼なんていらないよ

283:デフォルトの名無しさん
12/05/12 00:38:39.18
>>281
理由を教えてあげなよ

284:デフォルトの名無しさん
12/05/12 00:42:24.85
なんで?

285:デフォルトの名無しさん
12/05/12 00:49:42.02
いやまあいいけどさ別に
そこまで教えてあげたなら、ね

286:デフォルトの名無しさん
12/05/12 00:50:12.83
お前が教えろよ。

287: ◆QZaw55cn4c
12/05/12 00:50:43.88
>>283
"―" はシフトJIS では 0x81, 0x5c。
0x5c は '\' (バックスラッシュ)で、これは C のエスケープシーケンスの始まりを示すね。
で、問題のコンパイラは、一文字目の "―" の後ろに続く、二文字目の "―" の最初の 0x81 をエスケープシーケンスの2バイト目と解釈してしまった。
無論、\ + 0x81 に相当するシーケンスは定義されていないから、エラーとして表示された。

こんなところでいいかな?

>>268
玉方と王方の区別は?

288:デフォルトの名無しさん
12/05/12 00:51:38.58
単にそのコンパイラが日本語に対応してないからだろ。

289:デフォルトの名無しさん
12/05/12 00:54:55.18
>>287
さすがだね
出来るやつは後進の育成にも積極的なのは世の常

290:デフォルトの名無しさん
12/05/12 00:56:19.60
出た、クズの自演。

291:デフォルトの名無しさん
12/05/12 00:58:01.88
>>290
>>287>>289のIPおせーてくださいって運営に言ってみれば?w

292:デフォルトの名無しさん
12/05/12 00:58:48.26
ト リ プ ル 自 演 乙。

293:デフォルトの名無しさん
12/05/12 00:59:45.45
なんか自演妄想してる人がとってもかわいそうに思えてきた
いいんじゃないですか?そう思っておけば

294:デフォルトの名無しさん
12/05/12 01:03:03.13
そうだね、クズはクズだし。

295: ◆QZaw55cn4c
12/05/12 01:10:27.04
出た!
自演を演出するための自演。

シフトjis なんて fat32 が現れた時点から死滅する運命だろうなと思っていたんですが、現実には10年を超えた今でも長生きしていますね。

296:デフォルトの名無しさん
12/05/12 01:11:41.53
海外のオープンソースのプロジェクトに参加してみたいんですが、どう探せばいいですか?
停滞しているプロジェクトにいきなりアプローチしても反応がなさそうなので、
活発そうなところを探したいです。英語はできます。

297:デフォルトの名無しさん
12/05/12 01:12:43.96
スレ違い。

298:デフォルトの名無しさん
12/05/12 01:13:31.98
ありがとうございました。よかったらどこへ投稿したらいいか教えてくださると幸いです。。

299:デフォルトの名無しさん
12/05/12 02:00:40.01
include <stdio.h>
void main(void)

{

printf("C言語始めました。");
printf("先輩方よろしくお願いします。");

}


300:299
12/05/12 02:05:31.38
// \nがねえワロス

301:デフォルトの名無しさん
12/05/12 02:34:10.05
#もねぇ。。

302:299
12/05/12 02:45:38.93
クソッ
クソッ
手元にビジュアルスタジオさえあれば間違いなんてすぐ分かるのにヘタレすぎワロタ

303:デフォルトの名無しさん
12/05/12 03:09:02.00
>>302
>>1
URLリンク(codepad.org)
URLリンク(ideone.com)


304:デフォルトの名無しさん
12/05/12 05:31:58.12
BS11 報道原人「“ネット右翼"の素顔を見た」
2012年5月12日(土) 8時30分~9時00分



ゲスト:安田浩一(ジャーナリスト)

中国や韓国などに対して過激な批判を展開する「ネット右翼」。
会員数1万人以上を誇り右翼団体の中でも最大規模となっている組織も存在する。
実際にネット右翼を取材したジャーナリスト・安田浩一氏は、一人ひとりに会ってみると、
おとなしい今どきの若者たちが多いという。

URLリンク(www.bs11.jp)

305:デフォルトの名無しさん
12/05/12 09:50:30.59
>>299
C:\>gcc test.c
test.c: In function `main':
test.c:4: warning: return type of 'main' is not `int'

306:デフォルトの名無しさん
12/05/12 10:26:28.06
>>305
// 理解不能です
// printf scanf if whileしか理解できません

307:デフォルトの名無しさん
12/05/12 10:52:49.44
>>305
よく見たらWindows環境だったけど
gcc test.c
なんて書かれてると不安を覚えるなあ…
いや、コンパイル後の扱い次第なのはそうなのだが

308:デフォルトの名無しさん
12/05/12 10:57:26.84
>>306
[int] main()
mainの前のintは省略可能≠void

309:デフォルトの名無しさん
12/05/12 14:10:07.86
RPGとかのキャラ情報って全部構造体に入れるんでしょうか?
HPや攻撃力などの要素がかなり多い場合、どうやって管理するんでしょうか
何百行にも渡ってtypedef struct~とか書くんでしょうか

310:デフォルトの名無しさん
12/05/12 14:12:19.92
その手のデータはcsvファイルにまとめといて
そこから読みだす
できれば、そのcsvデータを作る別のプログラミも作る


311:デフォルトの名無しさん
12/05/12 14:59:11.24
csvよりはYAMLっぽい表記をパクるなりしてkey=value
なのを階層的にずらずら並べていったほうが柔軟性、拡張性は高い。
敵:
 名前=毒スライム
 属性=毒,混乱
 毒:
  確率=10%
  ダメ=1-8
  備考=3回刺されたら即死

てな感じで。
例えば備考のような項目はデータとして存在していてもプログラム側ではとりあえず無視して
将来対応するようにしても良い。
何にしても型に頼らずデータで表現するというのが重要。

312:デフォルトの名無しさん
12/05/12 19:14:59.41
アクションですらかなり項目があるからRPGとか管理で死ねそう

313:デフォルトの名無しさん
12/05/12 20:04:49.46
最も評価の悪い国
1位 イラン
2位 パキスタン
3位 北朝鮮
4位 イスラエル
5位 ロシア
6位 韓国  ←←←←←←←←←←←

最も評価の高い国
1位 日本
2位 ドイツ
3位 カナダ
4位 イギリス
5位 中国
6位 フランス

BBC世界世論調査2012
URLリンク(www.globescan.com)

314:268
12/05/12 20:14:21.81
>>281-287
自分が見ていないときに回答されていて驚きました。
実際にputs関数の中を変更したら、実行できました。
これは、要するに全角記号だとコンパイラによって処理がかわるから、全角記号は避けたほうがいいということでいいでしょうか?

>>287
とりあえず表示したかっただけなので、まだ区別は考えていません。

315: ◆QZaw55cn4c
12/05/12 20:17:28.91
>>313
スレリンク(tech板:785-786番)

316: ◆QZaw55cn4c
12/05/12 20:27:16.59
>>314
>全角記号だとコンパイラによって処理がかわるから、全角記号は避けたほうがいいということでいいでしょうか?
今回、コンパイルできなかったときのコンパイラは、シフトJIS に対する作りこみがなかったんですね。
まあ、それが普通でしょう。
確かに日本語とか全角とかある種の半角カタカナとかはやめておいたほうがいいかもしれません。

シフトJIS - CP932 は、さまざまな問題をはらんでいるにもかかわらず Windows やその前から使用されているですが、一概に反旗をかかげるわけにもいかなくて。
ユニコード騒動での誰得感が払拭できないのは、私がふるーい人間だからかなあ?

317:268
12/05/12 20:39:14.27
>>316
理解できました。いい経験になったと思います。
ありがとうございました。また質問に来るかもしれませんが、よろしくお願いします。

318:デフォルトの名無しさん
12/05/12 22:55:09.04
プログラミングの単位2年連続落として1留した。
腸煮え繰り返る思いだ。
説明悪すぎるんだよクソ教授。癌になってしんでほしい。

319:デフォルトの名無しさん
12/05/12 23:02:03.42
>>318
そんなに難しいことやってるの?

320:デフォルトの名無しさん
12/05/12 23:11:29.51
>>318
わかんなかったら、わかるためのあらゆる努力はしたのかい?
受け身の学習法では、今後社会に出てから困るよ

321:デフォルトの名無しさん
12/05/12 23:15:40.14
>>318
ここにたむろする連中の大半は独学だ。学校の授業など糞だと思っている奴らばかりだ。
単位だけほしいのなら スレリンク(tech板) にお題を投下すれば、大概はネタ thanks とばかりに適当に片付けてくれる、あー気分次第という面々も多いが。
後で困ることがあるかもしれんが。

322:デフォルトの名無しさん
12/05/13 00:03:11.08
>>320
社会に出たら、単位取りゲーム得意な人間程うまくのしあがるんだよ。
大学の勉強何かで無駄に頭使いたくないね。

323:デフォルトの名無しさん
12/05/13 00:07:00.56
確かに正論ではある。
プログラムの知識ない奴プログラミングの腕はすごいw

324:デフォルトの名無しさん
12/05/13 00:30:14.79
アンドロイドアプリ難しすぎ。

325:デフォルトの名無しさん
12/05/13 00:33:04.19
アプリ作るのがホントに難しいのか、それとも……


326:デフォルトの名無しさん
12/05/13 00:58:07.48
>>322
つまらん、必要ねーだろこれっていう知識がどこで生きてくるかわからない
セレンティピティーとはそういうもの

まあ、人それぞれ考え方はあるけどね

327:デフォルトの名無しさん
12/05/13 00:58:29.26
×セレンティピティー
○セレンディピティー

328:デフォルトの名無しさん
12/05/13 01:02:30.17
>>326
おっぱいぼよよーん

329:デフォルトの名無しさん
12/05/13 02:08:03.40
インターネット無し時代に独学した人スゴいな。

330:デフォルトの名無しさん
12/05/13 02:17:38.56
インターネット時代の現代では、知識も均質化してきてるので
厳しい時代だのう。。

331:デフォルトの名無しさん
12/05/13 02:21:38.06
>>329
書籍とか処理系のマニュアルとかで勉強してたよ

332:デフォルトの名無しさん
12/05/13 03:42:40.87
borland の日本語WinAPIヘルプはものすごく使いやすかった
MSDNのヘルプもあれくらい軽量高速なヘルプにするべき

333:デフォルトの名無しさん
12/05/13 04:28:08.12
今はヘルプどころかOSも統合環境も重いからな

334:デフォルトの名無しさん
12/05/13 08:17:02.49
>>324
そうか?

335:デフォルトの名無しさん
12/05/13 08:37:39.24
>>330
そう思い込んでるやつが増えただけ
わかってない奴が使えない点は何も変わってない

336:デフォルトの名無しさん
12/05/13 08:43:45.47
1行目と無関係な結論の例です。
1 そう思い込んでるやつが増えただけ
2 太陽が東から昇る点は何も変わってない

337:デフォルトの名無しさん
12/05/13 08:55:28.24
均質化なんかしてねえってことだよ (こんなとこで挙証する気はねえぜ)
Wiki の丸暗記で天狗になってるだけで、何かやらせようとするたびまたネットサーフィンだけで自分の創造をしないやつはいらねえ
そういうクズと10を要求したら12くらいやってくる逸材が全然ちがうのは今に始まったことではない

# やれやれ、ここまでかみ砕いかにゃわからんとはな

2ちゃんにもググレカスと鳴くだけでそいつ自身は空っぽなやつがごまんといるだろ

338: ◆QZaw55cn4c
12/05/13 09:02:28.93
>>327
>セレンディピティー
凡人もはげましてくれるいい言葉ですね。ともかくもガラクタでもクズでもいいから探求しなければ物事は始まらない。

>>322
嫁 つURLリンク(ja.wikipedia.org)
あと、ここ20年のデフレ下では「なにもしないこと」が最善最強の戦略であった。今後はいずれインフレになり、この戦略は使えないことを教えてあげよう。

339:デフォルトの名無しさん
12/05/13 09:26:02.77
>>337
>(こんなとこで挙証する気はねえぜ)
すれって。
「いらねえ」やつが「いらねえ」という当たり前のことにスリカえとらんで。

340:デフォルトの名無しさん
12/05/13 09:27:09.34
>>339
何のためにだよ

341:デフォルトの名無しさん
12/05/13 11:10:17.07
>>335
そうかねぇ、
本で勉強しないで、ネット検索してわかったつもりになってるやつが
増えてきてる気がする

342:デフォルトの名無しさん
12/05/13 12:19:18.55
凄く初歩的なことなんですが、for文の条件って計算してから分岐するんですか?
それとも終わった時に計算するんでしょうか?
例えばfor ( a=0; a=5; a++ )の場合、何回分↓の処理を実行することになるんでしょうか

343:デフォルトの名無しさん
12/05/13 12:21:03.76
for (0;1;3){2}

344:デフォルトの名無しさん
12/05/13 12:22:28.18
>>342
それだと無限ループかな

345:デフォルトの名無しさん
12/05/13 12:23:20.78
>>342-343
計算してから分岐する。while(){}

346:デフォルトの名無しさん
12/05/13 12:27:24.51
continueの挙動が関わってくるからwhileじゃ表現しきれないんだよバーカ!

347:デフォルトの名無しさん
12/05/13 12:35:02.09
>>281-286
誰がbakaだって!

348: ◆QZaw55cn4c
12/05/13 12:42:58.84
>>342
試せばいい。
URLリンク(codepad.org) >>344
URLリンク(codepad.org) 0回
URLリンク(codepad.org) 5回

349:デフォルトの名無しさん
12/05/13 13:01:25.32
qzaのだけはrunしないほうがいい

350:デフォルトの名無しさん
12/05/13 13:03:28.52
>>349
なんで?
>>344も勉強になったでしょ。

351:344
12/05/13 13:14:43.81
なんで俺がいまさらfor文の書き方を勉強せにゃいかんのか?

352:デフォルトの名無しさん
12/05/13 13:46:24.42
for(A;B;C)D;
の場合、ABD;CBD;CBD;CB...
Bの条件で終了するなら、ABD;CBD;CBD;CB

間違っても
決して、ABD;BCD;BCD;BC...
ではない。
>>344 語尾に「?」つけてみればわかる。

353:デフォルトの名無しさん
12/05/13 14:02:31.26
a = 0;
START:
if(a = 5) goto END;
...
a++;
goto START;
END:

354:デフォルトの名無しさん
12/05/13 14:11:15.07
>>353
× a = 5
○ a == 5

355:デフォルトの名無しさん
12/05/13 14:16:37.53
相変わらず簡単な問題のときにしか出てこないクズにワロタwww

356:344
12/05/13 14:17:13.39
>>352
俺が断定しなかったのは、コンパイラの設定によってはビルド自体ができないからだよ
まあ、こんな質問にそこまで考慮する必要はないんだろうけどね

357:デフォルトの名無しさん
12/05/13 14:19:07.76
>>354
>>342

358: ◆QZaw55cn4c
12/05/13 14:26:54.04
>>355
スレリンク(tech板)
スレリンク(tech板)
スレリンク(tech板)
スレリンク(tech板)

359:デフォルトの名無しさん
12/05/13 14:33:20.32
そんなうんこスレばかり貼るな。

360:デフォルトの名無しさん
12/05/13 14:38:34.38
C言語プログライング能力試験1級のコツ

361:デフォルトの名無しさん
12/05/13 16:17:30.15
URLリンク(codepad.org)

362:デフォルトの名無しさん
12/05/13 17:21:53.86
>>346
それは「goto だけは使わない」人が自らを詰ませている滑稽な図式だ
for の continue に代わる動作くらいどうにでも作れるさ

363:デフォルトの名無しさん
12/05/13 17:29:30.75
オナニストに子作りの方法語られてもニントモカントモ

364:デフォルトの名無しさん
12/05/13 17:40:06.66
main.cpp(40) : warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead.
To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(237) : 'fopen' の宣言を確認してください。

#include <stdio.h>を宣言してあるのにfopenしたらこんなのが出てくるんだけど何が原因でしょうか?

365:デフォルトの名無しさん
12/05/13 17:41:06.82
>>364
読めよ

366:デフォルトの名無しさん
12/05/13 17:48:36.26
子作りの方法は全然ちがうんだが

よっぽどひどい育てられ方をしたんだな
そんなに重篤な精神分裂を来すとは

367:はちみつ餃子 ◆8X2XSCHEME
12/05/13 17:52:12.34
>>364

> This function or variable may be unsafe. Consider using fopen_s instead.
この関数、または変数は安全ではありません。 かわりに fopen_s を使うことを検討して下さい。

> To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
非推奨を無効にするには _CRT_SECURE_NO_WARNINGS を使って下さい。 詳細はオンラインヘルプを参照のこと。

368:デフォルトの名無しさん
12/05/13 18:24:22.48
>>364
そもそもスレ違いだ。

369:デフォルトの名無しさん
12/05/13 19:07:37.73
c言語ってスレ違いなの?

370:344
12/05/13 19:17:44.18
MS独自拡張はスレ違いじゃね?

371:デフォルトの名無しさん
12/05/13 19:23:20.02
             /)
           ///)
          /,.=゙''"/
   /     i f ,.r='"-‐'つ____   こまけぇこたぁいいんだよ!!
  /      /   _,.-‐'~/⌒  ⌒\
    /   ,i   ,二ニ⊃( ●). (●)\
   /    ノ    il゙フ::::::⌒(__人__)⌒::::: \
      ,イ「ト、  ,!,!|     |r┬-|     |
     / iトヾヽ_/ィ"\      `ー'´     /

372:デフォルトの名無しさん
12/05/13 19:24:34.61
その切り分けが可能な人はここに聞きに来ないよ。

373:デフォルトの名無しさん
12/05/13 19:46:19.68
>>372
んだ

374:デフォルトの名無しさん
12/05/13 23:52:35.63
いや、C++がスレ違いだ。

375:デフォルトの名無しさん
12/05/14 04:44:35.22
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int t;
system("cls");
for(t=0;t<12;t++){printf("\n");}
for(t=0;t<19;t++){printf(" ");}
printf("中心");
for(t=0;t<12;t++){printf("\n");}
for(t=0;t<40;t++){printf("_");}
return 0;
}
DOS画面の真ん中に「中心」って文字を表示するのに
変数tを複数のforで使いまわして作ってみたんだけど
コンパイルでエラーは出ないものの使い方としてはどうとかあるかな?
検索でダメってのは見かけないけど大丈夫とも見なくて不安がある

376:デフォルトの名無しさん
12/05/14 04:55:37.65
問題ないお

377:デフォルトの名無しさん
12/05/14 06:39:56.53
curses

378:デフォルトの名無しさん
12/05/14 06:41:54.72
PDCurses (Public Domain Curses)は
UNIX以外の DOS、Windows、OS/2など向けに作られた curses とほぼ同じ機能を提供するライブラリである

curses - Wikipedia

379:デフォルトの名無しさん
12/05/14 06:44:15.35
>for(t=0;t<19;t++){printf(" ");}
>printf("中心");
for(t=0;t<19;t++){printf(" ");}
printf("%*s", 42, "中心");

380:デフォルトの名無しさん
12/05/14 06:50:41.70
IBM PC やその互換機では、BIOSとMS-DOSシステムコールが画面に文字を出力する手段を提供しており、
ANSI.SYSドライバでANSIエスケープシーケンスを処理できる

URLリンク(ja.wikipedia.org)テキストユーザインタフェース

381:デフォルトの名無しさん
12/05/14 06:58:57.89
Windowsならここらへんを使うんだけど
面倒だから位置とか色とかは考えないほうがいいよ
URLリンク(msdn.microsoft.com)

382:デフォルトの名無しさん
12/05/14 07:06:40.45
単にループ変数の使いまわしについてしか聞いてないのに、
そこまでして知ったかぶりたいものかねえ

383:デフォルトの名無しさん
12/05/14 07:38:19.66
>>375
構文としては意図した意味になっているし、
賢いコンパイラを使うのであれば、性能上の問題はないと期待できる

だからあとは、書き方としてお行儀がいいのかという問題だが、
「スコープは最大限狭める」という原則に従うなら、こう書くこともできる

for(int t=0;t<12;t++){printf("\n");}
for(int t=0;t<19;t++){printf(" ");}
printf("中心");
for(int t=0;t<12;t++){printf("\n");}
for(int t=0;t<40;t++){printf("_");}

しかし、これはC89ではできない書き方であるし、
ほとんど差がないのも間違いないので、提示のように書いたとしても問題ないと思う

384:デフォルトの名無しさん
12/05/14 08:14:46.00
衒学的に考えるなら、桁方向のループ制御変数と行方向のループ制御変数を分けるべきと言う意見もありそうだ。

385:デフォルトの名無しさん
12/05/14 09:42:15.15
エスケープシーケンスでカーソル移動は駄目なの?

386:デフォルトの名無しさん
12/05/14 09:52:06.33
>>380 「ANSI.SYSドライバでANSIエスケープシーケンス」

387:デフォルトの名無しさん
12/05/14 09:56:58.23
CにもRubyにもcursesライブラリがあるよ

388:デフォルトの名無しさん
12/05/14 11:38:47.53
マジックナンバーをどうにかしる!

389:デフォルトの名無しさん
12/05/14 14:28:45.45
for文の条件式の部分で、例えば
int i,a;

scanf("%d",&a)

for(i=1;i<=a;i++){
}
とかってできないんですか?エラーがでてしまいます。
これができれば指定した数分の掛け算表ができて便利なんですが...

やっぱり一々ソースを書き直したりしないといけませんか?

390:デフォルトの名無しさん
12/05/14 14:32:07.77
エラーなのはお前の頭だろう。

391:片山博文MZボット ◆0lBZNi.Q7evd
12/05/14 14:33:47.41
>>389 ;がない。

392:デフォルトの名無しさん
12/05/14 14:42:47.50
あ、セミコロン(´;ω;`)
教えてくれてありがとうございます!

393:デフォルトの名無しさん
12/05/14 15:11:35.82
いえいえ

394:デフォルトの名無しさん
12/05/14 15:43:56.26
>>390みたいに煽るだけのカスはいらね

395:デフォルトの名無しさん
12/05/14 15:53:16.68
お前みたいなただのカスのがもっといらねぇだろwww

396:デフォルトの名無しさん
12/05/14 15:55:30.48
質問です。
画像を移動したいんですが、真横や真縦はx,yをそれぞれの値になるまで足して描画を繰り返すのは分かるんですが、
少しずれたところに移動させるのはどういう式になるんでしょうか。
例えば、x0,y0からx200,y0は出来ますが、x0,y0からx200,y45が分かりません。


397:デフォルトの名無しさん
12/05/14 16:07:24.69
わからないぷー

398:デフォルトの名無しさん
12/05/14 16:10:58.46
0,0と200,45を結ぶ直線の傾きは?
yを1増やすにつき、xをいくつ増やせば良い?
少数が必用なので、少し頭を使うかもしれんが。
プログラムじゃなくて、算数の問題。

399:デフォルトの名無しさん
12/05/14 16:12:36.28
>>396
簡単にするには座標を浮動小数点で持って1回に動かしたい量をそれぞれに
足しこんでいけばいい。

400:デフォルトの名無しさん
12/05/14 17:01:08.69
ああ、やっぱり小数点の公約数なんですね…特別な関数があるかと思ってました。
ありがとうございます。

401:デフォルトの名無しさん
12/05/14 17:13:25.28
おまえらってC言語に関しては天才なの?

402:デフォルトの名無しさん
12/05/14 17:16:55.21
今時は小数点に公約数があるのか...

403:デフォルトの名無しさん
12/05/14 17:32:07.36
>>401
天才じゃないと答えられないような質問あったか?

404:デフォルトの名無しさん
12/05/14 17:42:43.52
>>400
いえいえ

405:デフォルトの名無しさん
12/05/14 18:14:43.31
最近は
A:xxxについて教えて。
B:yyyだよ
A:ありがとうございます
C:いえいえ

という返信をする変人がいるらしい。

406:デフォルトの名無しさん
12/05/14 18:19:49.22
>>396
(0, 0)から(200, 45)に滑らかに移動したいと言うこと?
(200, 0)を経由していいなら横と縦に分割できるじゃん。

407:デフォルトの名無しさん
12/05/14 19:13:05.98
x+20、y+4,5とかね

408:デフォルトの名無しさん
12/05/14 19:48:15.34
一様乱数教えてくださいな

409:デフォルトの名無しさん
12/05/14 20:00:06.95
randam()

410:デフォルトの名無しさん
12/05/14 20:14:45.18
混合合同法ってなんですか

411:デフォルトの名無しさん
12/05/14 20:15:12.90
>>408
Mersenne Twister: A random number generator
URLリンク(www.math.sci.hiroshima-u.ac.jp)

412:デフォルトの名無しさん
12/05/14 20:49:48.61
#include <stdio.h>

int sum(int,int);

int main (void)
{
int value,Left,Right;

scanf("%d,%d",Left,Right);

value = sum(Left,Right);
printf("%d\n",value);
return 0;
}


int sum(int min,int max)
{
int num;
num = (min + max) * (max - min + 1) / 2;
return num;
}

scanf("%d,%d",Left,Right); この部分にエラーが出ました...
何が悪いのでしょうか?

413:デフォルトの名無しさん
12/05/14 20:57:05.22


414:デフォルトの名無しさん
12/05/14 20:58:38.72
あ、&(´;ω;`)
またまた凡ミスしていまいました
どうもです...

415:デフォルトの名無しさん
12/05/14 21:01:49.12
いえいえ

416:デフォルトの名無しさん
12/05/14 22:38:53.08
いえいえ禁止!

417:デフォルトの名無しさん
12/05/14 22:58:41.47
C言語で円周率を10桁求めるプログラム作りたいです。
ソースコード教えてください。

このプログラム作るの簡単ですか?初心者です。

418:デフォルトの名無しさん
12/05/14 23:00:10.55
>>417
ググって貼り付けるだけ

419:デフォルトの名無しさん
12/05/14 23:00:47.54
>>417
マクローリン展開 円周率でぐぐる

420:デフォルトの名無しさん
12/05/14 23:04:27.38
printf(”3.141592653”);

421:デフォルトの名無しさん
12/05/14 23:07:50.29
>>417
ぐぐってこぴぺ。マチンの公式、うっふぇ。
URLリンク(ideone.com)


422:デフォルトの名無しさん
12/05/14 23:12:42.67
>>420
それだめらしいです。


もう一つ
二次方程式の解を√つきで実数だけ全て求めるプログラムも教えてください。

実行例
a.out
x^2 ? ←出力
1    ←入力
x ?  ←出力
1    ←入力
定数 ? ←出力
-1 ←入力

x^2+x-1の解は ←出力
y=(-1+√5)/2
y=(1+√5)/2


みたいな感じのプログラムです。

期限は円周率とこの二次方程式のプログラムセットで3週間です。
後4日です...徹夜で考えてるけど特に二次方程式のプログラムは
思いつきません...



423:デフォルトの名無しさん
12/05/14 23:16:11.09
>>422
アホかお前
出直してこい
何もわかっちゃいねーーーーーーー
プログラムの前に中学生の数学からやり直せ
ミジンコ

424:デフォルトの名無しさん
12/05/14 23:18:07.10
徹夜ワロタwww

425:デフォルトの名無しさん
12/05/14 23:20:53.07
πの計算は、>>421が終わると、今度は多倍長計算がやってみたくなる
ライブラリ一切使わずに加減乗除だけで自力で組んでみるとなかなか面白いよ

426:デフォルトの名無しさん
12/05/14 23:23:49.34
円周率は、可能なら10桁ってことで、3.14以上、つまり4桁以上を出せれば
とりあえずOKらしいです。(という噂)

二次方程式は、解が無しなら、この解無しみたいな出力もするプログラムです。

後4日。お願いします'--'(手)

427:422
12/05/14 23:24:51.29
y=(-1+√5)/2
y=(-1-√5)/2

でしたね。すいません

428:デフォルトの名無しさん
12/05/14 23:37:42.49
>>422
くっそ適当wwwwwwwww
間違いがあったら自分で直してねwwwwwwwww
URLリンク(ideone.com)

429:デフォルトの名無しさん
12/05/14 23:39:27.29
>>428
お前も勉強しなおし

430:428
12/05/14 23:41:01.12
ソースみりゃわかるとおもうが、例えば√4とか平気で表示すっからなwww
あと、小数(分数)になっても、小数点以下完全無視だからwww

それがいやなら、これをベースに徹夜するのだwww

431:428
12/05/14 23:52:28.29
それから重解表示もふつーに√0なwww
まあ、がんばれwww

もしかしたら、プロさんがすばらしい式整形盛りこんだやつ作ってくれるかもね

432:デフォルトの名無しさん
12/05/15 00:13:10.26
>>431
根本的に間違ってるよw

433:428
12/05/15 00:18:27.64
>>432
wwwwwwwwwww

くっそソースをくそ修正wwwwwwww

URLリンク(ideone.com)

434:デフォルトの名無しさん
12/05/15 00:42:26.71
>>433
どこへ向かってるんだwww

435:428
12/05/15 00:44:59.36
>>434
>>428で、>>427の答えを出すにはどう式を立てればいいかちょっと悩んだぞwwwwww

436:デフォルトの名無しさん
12/05/15 01:20:13.92
#include <stdio.h>

void check(int y[])
{
printf("check : %d\n", sizeof(y) / sizeof(y[0]));
}

int main()
{
int x[5];

printf("main : %d\n", sizeof(x) / sizeof(x[0]));
check(x);

return 0;
}

両方とも5が出力されると思っていたのですが
mainは5でcheckが1になります。
check関数のyはmainのxそのものを別名でアクセス出来るものかと思っていたのですが
checkが1になる理由は何なのでしょうか。よろしくお願いします。

437:デフォルトの名無しさん
12/05/15 01:21:16.66
>>436
ポインタだから

438:436
12/05/15 01:29:13.51
>>437
なるほど。そうなるとmainの中のxは配列を指しているわけではないという事でしょうか
sizeof(x)ってやって5になるってことはそうなんですよね・・・
今まで配列の名前自体は配列を指してるってイメージだったんでちょっと頭こんがらがってきました
解答ありがとうございます

439:436
12/05/15 01:31:09.17
ポインタだと思ってるんだったら1になるのが当たり前って思うべきなんですよね
なんか言ってる事めちゃくちゃでごめんなさい。

440:デフォルトの名無しさん
12/05/15 01:47:24.31
>>438
main の中では配列だけど
関数の引数で渡された時点でポインタになる

441:436
12/05/15 01:52:10.42
>>440
すいません。ありがとうございました。
勉強し直してきます。

442:デフォルトの名無しさん
12/05/15 20:50:20.17
>>438>>441
いえいえ、お礼は結構ですよ

443:デフォルトの名無しさん
12/05/15 21:20:18.65
VisualStudio2010
ver 10.0.40219.1 sp1relを使用しています。
少しポインタを復讐しようと思いまして、入力した文字から最大値と最小値を出力するプログラムを書きました。
ソース(きたなくてすいません)
#include<stdio.h>
void maxmin(int *array,int *max,int *min);
int main(void){
int array[10];
int max,min,i=0;
do{
scanf("%d",&array[i]);i++;
}while(array[i-1]!=-1 && i<10);
maxmin(array,&max,&min);
printf("最大値:%d\n最小値:%d\n",max,min);
}

void maxmin(int *array,int *max,int *min){
*max=0;*min=100;
for(int i=0;*(array+i)!=-1 && i<10;i++){
*max = (*(array+i) > *max) ? *(array+i) : *max;
*min = (*(array+i) < *min) ? *(array+i) : *min;
}
return;
}
これをVisualStudioで実行すると構文エラーが起きてしまいます。ただ、bcc?ではエラーは起きませんでした。
maxmin関数内のiの宣言をforの中ではなく、一番上で宣言するとVisualStudioでもエラーは起きませんでした。
少し良くわからないので、教えてくれる方いたらお願いします。

444:デフォルトの名無しさん
12/05/15 21:34:09.11
>>443
ANSI-Cでは変数の宣言は複文の先頭にしかかけません。
これは予想ですけどVC++ではCとしてコンパイル、BCCではC++としてコンパイル
しているのでは?

もう一つ、mainが戻り値を設定していないので、警告が出ます。
コードの中身はチェックしていませんので、悪しからず。

445:デフォルトの名無しさん
12/05/15 21:40:08.01
>>443
VS側はコンパイラのオプションでエラーを出さない様に出来る。

446:デフォルトの名無しさん
12/05/15 21:40:29.59
>>438
配列名は式中では配列の先頭要素へのポインタとなる。
ただしsizeof, &のオペランドになったときは例外。

447:デフォルトの名無しさん
12/05/15 21:59:34.84
>>444
すべて仰るとおりです。すごいですね!!
VisualStudioでcppで作成し、mainにreturn 0;を追加したところコンパイルできました。ありがとうございました。

>>445
ありがとうございます。
オプションがどこにあるかよくわからなかったので、cppとして作成しました(^_^;)

448:デフォルトの名無しさん
12/05/15 23:01:41.01
いえいえ

449:デフォルトの名無しさん
12/05/15 23:32:19.49
いいぇいいぇ


450:デフォルトの名無しさん
12/05/15 23:35:06.28
イェイイェイ

451:デフォルトの名無しさん
12/05/15 23:36:05.52
君と ウェイ! ウェイ! ウェイ! ウェイ!


452:デフォルトの名無しさん
12/05/15 23:57:44.68
いっつだってワークワーク

453:デフォルトの名無しさん
12/05/16 04:02:50.68
通常正であるコストを、無限のコストとして-1を設定したときに
コスト同士の比較で、コストが最小となるものを求めるときに
//cost1,cost2,minはint
min=cost1;
if ((unsigned)min > cost2) min=cost2;・・・(1)
上のif文と(完全にではないですが)同等の条件として
if(min == -1 || (min > cost2 && cost2 != -1) ) min = cost2;・・・(2)

(1)のような(unsigned)-1 = INT_MAXを使った書き方は推奨してよいものなのでしょうか?
標準Cでは、符号あり→符号なしの変換はbit列を維持することが保証されているようですが、
具体的には(unsigned)-1のような使い方は、一般的に使われているのかが知りたいです

454:デフォルトの名無しさん
12/05/16 04:08:33.93
Cの仕様としては保証されないが使われてるね。

455:デフォルトの名無しさん
12/05/16 04:09:27.02
そもそも
(unsigned)-1 = INT_MAX
が成り立つ保証がない。

456:デフォルトの名無しさん
12/05/16 04:40:31.68
>>454
裏技みたいなものなのですかねえ

手持ちのC参考書には
signed X → unsigned Yにおいて
X=Y、x < 0 のとき y=x + (1 + Y_MAX)
と書かれており、
調べてみたら
JIS X3010 URLリンク(www.jisc.go.jp)
6.3.1.3項にも同様のことが書かれているのですが
JIS規格と、Cの仕様って必ずしも一致しないのですかね

457:デフォルトの名無しさん
12/05/16 11:06:09.34
entryの宿命はよ。

458:デフォルトの名無しさん
12/05/16 11:15:43.81
>>456
それは見えないが処理系依存と書いてるんじゃないのか?
そもそも符号付整数を1の補数であらわすのか2の補数であらわすのか
あるいは別の形式かも処理系依存だろ。

459:デフォルトの名無しさん
12/05/16 13:15:05.20
だろ。!

460:デフォルトの名無しさん
12/05/16 13:23:31.11
>>458
しつこい

461:デフォルトの名無しさん
12/05/16 14:03:02.10
理解できないからって恥ずかしいやつだな。

462:デフォルトの名無しさん
12/05/16 14:16:53.92
処で、どっかにLinuxのtmpfile()のソース落ちてないかな。

463:デフォルトの名無しさん
12/05/16 14:18:45.67
このスレと何の関係が?

464:デフォルトの名無しさん
12/05/16 14:22:53.45
Cの標準関数やから。

465:デフォルトの名無しさん
12/05/16 15:27:35.21
handle closeとファイル消去の紐付け方法を
判んない思いつけないんでしょ462は

466:462
12/05/16 16:34:47.06
いや、単にファイル名をどう生成しているか知りたいだけ。
creat()してすぐunlink()していることは想定内。

467:デフォルトの名無しさん
12/05/16 20:13:55.04
>>462
オプソなんだからそりゃどっかにあるだろ
glibcでググればいいと思う


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch