[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 09/06 22:43 / Filesize : 155 KB / Number-of Response : 705
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け(入門編)Part 101



1 名前:デフォルトの名無しさん [2012/05/04(金) 04:05:26.52 ]
C言語の入門者向け解説スレッドです。

★前スレ
C言語なら俺に聞け(入門編)Part 100
toro.2ch.net/test/read.cgi/tech/1333108892/
★過去スレ
makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
  ↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 157代目
toro.2ch.net/test/read.cgi/tech/1335517816/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

長くなりそうなコードはcodepadに貼り付けてもいいでしょう
codepad.org/
ideone.com/

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

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

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

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

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

6 名前:2 [2012/05/04(金) 12:02:37.64 ]
>>3>>4さん!

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

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

8 名前:5 [2012/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 名前:デフォルトの名無しさん mailto:sage [2012/05/04(金) 13:10:03.66 ]
>>8
マクロで書けばいいんじゃね?
仮にビットフィールドへのポインタが有りだとしたらどんなコードを書く?

10 名前:5 mailto:sage [2012/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 名前:デフォルトの名無しさん mailto:sage [2012/05/04(金) 14:45:02.78 ]
ビットフィールドを使わずに、ビット演算でやれば似たようなことはできるね。

12 名前:デフォルトの名無しさん mailto:sage [2012/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 名前:デフォルトの名無しさん mailto:sage [2012/05/04(金) 15:34:21.91 ]
>>10
いえいえ

14 名前:5 mailto:sage [2012/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 名前:デフォルトの名無しさん mailto:sage [2012/05/04(金) 16:01:37.31 ]
ビットフィールドのレイアウトがどうなるかは未定義だし、
ビットごとに意味を割り当てるにしてもビットフィールドを使わないことが多いね。

16 名前: ◆QZaw55cn4c mailto:sage [2012/05/04(金) 16:12:34.41 ]
もうビットフィールドなんて廃止したら‥‥‥

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

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

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

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



19 名前:デフォルトの名無しさん mailto:sage [2012/05/04(金) 17:37:22.16 ]
>>14
いえいえ

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



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


22 名前:デフォルトの名無しさん mailto:sage [2012/05/04(金) 22:53:48.92 ]
>>16
何で?

23 名前:デフォルトの名無しさん mailto:sage [2012/05/04(金) 23:34:29.44 ]
理解できないからだろ。聞いてやるなw

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

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

25 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 00:30:24.15 ]
廃止する理由には見えないな

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

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

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

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

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


29 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 01:52:10.36 ]
>>27もよく解らんが、>>28の応じ方は輪をかけて解らん。

30 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 02:06:26.65 ]
H8 の unsigned int は 16bit = 2byte
superH は 4byte




31 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 02:13:55.71 ]
組込とかなら今でも現役だったりするのかね

32 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 02:41:12.25 ]
ビットフィールドを絶対使えとかいってないでしょ

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

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

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

34 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 03:13:04.97 ]
書けるのに読めない人にはわからないことかも

35 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 03:43:16.00 ]
bool型がどうしたって?

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

37 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 05:10:37.10 ]
>>32
しかし、クズは使いようもないな。

38 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 07:20:33.81 ]
>>33
いちいち定数切るのが面倒。

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

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

40 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 07:50:35.47 ]
nはdefine定義しろよ



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

42 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/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 mailto:sage [2012/05/05(土) 08:20:47.91 ]
DirectXでビットフィールドはバリバリ現役だったりする

44 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 08:27:22.09 ]
で、貴様らは入門スレで何を話してるんだ
おっさんだろ

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

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

47 名前: ◆QZaw55cn4c mailto:sage [2012/05/05(土) 10:33:19.72 ]
>>36
んー。定石ですか。

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

49 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 11:23:05.84 ]
つーか、c99なら普通にできるだろ。

50 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 11:24:42.88 ]
前スレでも出たが制限はあるけどな。



51 名前:デフォルトの名無しさん [2012/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 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 14:52:11.70 ]
>>51
この程度がわかんなかったら
後々の学業に支障をきたすレベル
有体に言えば脳障害と見間違う程にひどい


53 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 14:53:54.19 ]
for (i = 1; i < N; i *= 10)
{
x = x * i;
}

54 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 14:56:40.57 ]
i *= 10;

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

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


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

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

58 名前:51 [2012/05/05(土) 14:59:27.28 ]
>>55
すみませんどこか日本語おかしかったでしょうか?



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

60 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 15:01:36.33 ]
>>51
x = x * 10;
-----------ここから下を省略したい--------------------
x = x * 100;
x = x * 1000;
x = x * 10000;

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



61 名前:51 [2012/05/05(土) 15:04:07.61 ]
>>59>>60

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

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

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


62 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 15:06:06.55 ]
だからそれならx = x * 1000000;
でいいだろが。

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

こういうことだろうか

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

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

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

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

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

68 名前:デフォルトの名無しさん [2012/05/05(土) 16:36:13.95 ]
うんこがなんか言ってるな。

69 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 16:38:18.94 ]
しゃべるクソなんだからしょうがない


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

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



71 名前:デフォルトの名無しさん [2012/05/05(土) 17:14:44.10 ]
日本語でおk

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

73 名前:デフォルトの名無しさん [2012/05/05(土) 20:08:19.73 ]
mallocなりcallocでええやん

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

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


75 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 20:14:41.58 ]
コテで無能自慢するのが流行りなんかね

76 名前:デフォルトの名無しさん [2012/05/05(土) 20:21:28.26 ]
知らなかったの?おっくれてるぅ

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

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

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

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


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



81 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 20:48:44.01 ]
自己紹介はやめろ

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

83 名前:デフォルトの名無しさん mailto:sage [2012/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 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 22:47:44.92 ]
GNUスタイルは久々に見た
初心者向けの本やサイトでそのスタイルは余りにも見かけない
本当に初心者なのかが疑問に残る
初心者が何もせずに何も見ずにそのスタイルに行きついたなら
ある種の教祖的な素質がある


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

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

87 名前:デフォルトの名無しさん [2012/05/05(土) 23:22:42.18 ]
日本語でおk

88 名前:39 mailto:sage [2012/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 mailto:sage [2012/05/05(土) 23:27:57.12 ]
>>86
因みに俺が最初に C のコーディングに使ったエディタは Vz だったよ。
教員もめんどくさいから最近だと VC++ 選ぶと思うけどな。
C の初心者に Emacs から指導するのは手間なだけだろ。


90 名前:39 mailto:sage [2012/05/05(土) 23:28:20.64 ]
free(m);
忘れてました



91 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/05/05(土) 23:29:00.84 ]
>>88
free するかどうかの議論がまた始まるよー。

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

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


93 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 23:45:01.47 ]
そんな変なの見たことねぇ。

94 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 23:45:41.53 ]
うん

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

96 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 23:57:19.78 ]
リークの意味がわかってないアホにはうんざり

97 名前:デフォルトの名無しさん mailto:sage [2012/05/05(土) 23:58:17.23 ]
それはコードゴルフスタイル

98 名前:デフォルトの名無しさん mailto:sage [2012/05/06(日) 00:00:21.67 ]
LastとRootの語をどう使い分けてんのかわけわからん

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

100 名前:デフォルトの名無しさん mailto:sage [2012/05/06(日) 00:36:28.99 ]
気持ち悪いね



101 名前:デフォルトの名無しさん mailto:sage [2012/05/06(日) 00:37:16.01 ]
キャメルケース
アッパーキャメルケース
ローワーキャメルケース
スネークケース

あなたはどれ?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<155KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef