トップページtech
1001コメント301KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2013/06/14(金) 20:22:05.73
C言語の入門者向け解説スレッドです。

★前スレ
C言語なら俺に聞け(入門編)Part 115
http://toro.2ch.net/test/read.cgi/tech/1368444993/
★過去スレ
http://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++の宿題片付けます 164代目
http://toro.2ch.net/test/read.cgi/tech/1370255305/
★C++言語については避けてください。C++対応明記スレへどうぞ。
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること。
  # サイズが大きい場合はアップローダ等を利用してください。
http://codepad.org/C/C++の宿題片付けます 165代目
http://ideone.com/
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
0047デフォルトの名無しさん2013/06/15(土) 20:28:30.41
>>45
breakとcontinueの違いってなんですかね?
一緒じゃないですか?
処理をしないんですから。
0048デフォルトの名無しさん2013/06/15(土) 20:30:24.50
釣りだな
0049デフォルトの名無しさん2013/06/15(土) 20:31:49.59
>>46 >>47

>>40 >>44 を見てると機能の差じゃなくて有る無しを気にしてるように見えるけど。
0050デフォルトの名無しさん2013/06/15(土) 20:35:08.93
すいません
berakにしてましたw

ただcontinueもあったことに築き不図
どう違うんだろうかと思っただけです。
そこらへん触れてなくてすいません。
0051デフォルトの名無しさん2013/06/15(土) 20:58:25.28
>>50
何もしない
for (i=0; ; i++)
  break;

無限ループ
for (i=0; ; i++)
  continue;
0052デフォルトの名無しさん2013/06/15(土) 21:14:20.31
この手のド初心者に for の変則形など見せても混乱するだけ
0053デフォルトの名無しさん2013/06/15(土) 21:37:35.37
gotoほどじゃないけど、continueも嫌う奴いるんだよな
そんでアホみたいにネスト深くしてくの
0054デフォルトの名無しさん2013/06/15(土) 22:05:37.55
関数記述で return を1箇所にまとめるか、複数個所で分散してるか
0055デフォルトの名無しさん2013/06/15(土) 22:12:47.07
ifの{ はifと同じ行に記述するか次の行に記述するか
0056デフォルトの名無しさん2013/06/15(土) 22:55:41.34
周波数を自由に変えてスピーカーに出力する簡素なソフトを
作りたいんですがVC++かmfcで作るとどういう命令を使うか
ヒントください。
0057デフォルトの名無しさん2013/06/15(土) 22:57:27.89
リアルタイムに出力するなら
DirectSoundを調べると良い

単にwavファイルを作れればいいのなら
普通のファイル操作関数とsinでおk
0058片山博文MZパンク ◆0lBZNi.Q7evd 2013/06/15(土) 22:58:39.57
>>56
waveOut*関数かDirectSound
0059デフォルトの名無しさん2013/06/15(土) 23:03:42.39
waveOut*は互換性のため残されてる古いAPIなので
0060片山博文MZパンク ◆0lBZNi.Q7evd 2013/06/15(土) 23:04:13.06
NT系ならBeepという関数も使える
0061デフォルトの名無しさん2013/06/15(土) 23:27:33.39
簡素なやつを作るだけんら古いAPIでよかろうもん
0062デフォルトの名無しさん2013/06/16(日) 04:59:22.30
>>60
9x系現役乙
0063デフォルトの名無しさん2013/06/16(日) 10:36:41.28
>>26
BoehmGC
0064デフォルトの名無しさん2013/06/16(日) 15:19:28.14
機械語にあるBCD演算命令を使うCの記述方法はありますか?
0065デフォルトの名無しさん2013/06/16(日) 15:21:50.08
>>64
ないよ。
0066デフォルトの名無しさん2013/06/16(日) 15:31:01.99
BCD演算命令は遅いよ
全く使われないから、手抜きされてる
0067デフォルトの名無しさん2013/06/16(日) 15:33:40.58
まずどこの環境かを聞くべき
インラインアセンブラでもできるんじゃないの?
0068デフォルトの名無しさん2013/06/16(日) 15:43:22.58
BCD命令はx64ではobsoleteなので
もう存在自体を忘れた方がいい
0069デフォルトの名無しさん2013/06/16(日) 23:41:49.32
アク禁になったらtor使っても書き込めないのは何故ですか?
2chに書き込むプログラム作ったんですがアク禁なんで書き込めない。
0070デフォルトの名無しさん2013/06/16(日) 23:58:49.84
tor の出口がたまたまアクセス禁止になっているだけかと
0071デフォルトの名無しさん2013/06/17(月) 00:06:06.78
てことはtorを使えば書き込みし放題なんでしょうか?
それに対する対処とかしてるんですか?2chって。
0072デフォルトの名無しさん2013/06/17(月) 00:10:52.33
たまたま出口がアク禁かもしれませんが
何回チャレンジしても書き込めません。
そういう対策してるんですか?2chでは。
今は携帯からですが。
0073デフォルトの名無しさん2013/06/17(月) 00:24:44.27
torは特定の板以外はだめじゃなかった?
0074デフォルトの名無しさん2013/06/17(月) 00:39:58.97
>>73
なるほどー
荒らされないように考えてるんだな2chも。
0075デフォルトの名無しさん2013/06/17(月) 15:07:41.89
do {
なんたらかんたら
} while(0);

こんなんなんか意味あるんすか?
0076デフォルトの名無しさん2013/06/17(月) 15:32:48.17
>>75
PHPユーザーが想定する優れたCプログラマ、には意味があるらしい
http://php.net/manual/ja/control-structures.do.while.php

俺はCとPythonな人間なんで、意味なんか見いだせないけどね
0077デフォルトの名無しさん2013/06/17(月) 15:44:03.58
マクロで複文を扱うときに
#define XXX() do { 複文 } while(0)
こう書くと

if (cond) XXX(); else ・・・;

if (cond) {XXX();} else {・・・;}

どっちの形で書かれても動く。
0078デフォルトの名無しさん2013/06/17(月) 15:55:04.63
>>75
goto 禁止対策
0079デフォルトの名無しさん2013/06/17(月) 15:56:55.67
マクロにセミコロンを含めないのがミソ
0080デフォルトの名無しさん2013/06/17(月) 16:06:27.37
>>77>>78
thx
goto回避という事は、シーケンスな処理の場合のエラーとかですね?
do {
if(処理1()==FAIL) break;
if(処理2()==FAIL) break;
if(処理x()==FAIL) break;
} while(0);
てな感じかな?
処理に待ちが入る場合はcallback関数使うと思うので、あまり出番はないかもしれないですね。
マイコン組込みでは有用かも?
0081デフォルトの名無しさん2013/06/17(月) 16:07:10.90
ローカルスコープ作るのに、ぎょっとさせない意図で
do { ... } while(0) で囲んだこともあった。 が、今は素直に { } で囲んでるな
0082デフォルトの名無しさん2013/06/17(月) 16:56:54.99
>>76
thx 御礼が抜けました。 PHPという事で誤爆かと思いました w
goto回避だけで無く、処理を通過した最後のComplete()処理が目玉という事ですね。
0083デフォルトの名無しさん2013/06/18(火) 21:30:45.91
関数の中でmain関数内で宣言された配列を使うのは無理ですかね?

#include<stdio.h>
void abc(int x,char y);
int main(void)
{
char str[100];

}
void abc(int x,char y)
{
str[x]=y;
}


配列の受け渡しは引数が面倒臭いので
省略したいです。
0084デフォルトの名無しさん2013/06/18(火) 21:34:47.03
グローバル変数にすればいいじゃん
0085デフォルトの名無しさん2013/06/18(火) 21:37:50.07
>>84
その方法がありましたか。
ありがとうございます。
0086デフォルトの名無しさん2013/06/18(火) 21:48:16.87
まあな。天才だからな
0087デフォルトの名無しさん2013/06/19(水) 01:13:46.89
>>83
どこが面倒だって?

static void abc(int x, char y, char * str)
{
str[x] = y;
}
0088デフォルトの名無しさん2013/06/19(水) 01:53:23.82
>>83
> 配列の受け渡しは引数が面倒臭い

ttp://ideone.com/MYrF6V
0089デフォルトの名無しさん2013/06/19(水) 10:17:22.66
>>88
うわぁ、めんどくさい奴〜
0090デフォルトの名無しさん2013/06/19(水) 19:09:20.14
>>84
グローバル変数とか死ねばいいのに
0091デフォルトの名無しさん2013/06/19(水) 19:51:19.78
代入できる関数ってありますか?

abc()=3;
int i;
i=abc();

こんな感じです。
配列は両側で代入できるから関数では無理ですか?
0092デフォルトの名無しさん2013/06/19(水) 19:52:33.61
Cだと無理
C++なら戻り値を参照にすればできる

ポインタを返して

*abc() = 3;
int i;
i = *abc();

とするのであればCでも可能
0093デフォルトの名無しさん2013/06/19(水) 19:56:19.84
>>91
ttp://ideone.com/ewvA9A

これくらいしか思いつかん
0094デフォルトの名無しさん2013/06/19(水) 19:57:49.83
関数型マクロなら
0095デフォルトの名無しさん2013/06/19(水) 20:03:40.60
関数ポインタ
0096デフォルトの名無しさん2013/06/19(水) 20:13:52.31
>>94
ttp://ideone.com/CoipE7
こういうことか
0097デフォルトの名無しさん2013/06/19(水) 20:18:22.43
なぜこうしない
#define abc() (*f())
0098デフォルトの名無しさん2013/06/19(水) 20:24:04.42
>>97
ああ、関数のカッコの方が * よりも優先度が高いのだったか。
ttp://www.bohyoh.com/CandCPP/C/operator.html

それならそれでいいね。
0099デフォルトの名無しさん2013/06/19(水) 20:25:57.36
おっと>>96の修正
ttp://ideone.com/BtfEbS
0100デフォルトの名無しさん2013/06/19(水) 20:27:41.10
ランタイムで配列を宣言する方法ってありますか?

配列の名前を入力
str
型を入力
int
要素数
10
作成しました int str[10]


無理ですか?
0101デフォルトの名無しさん2013/06/19(水) 20:27:51.66
>>98
それでいい、じゃなくてそうじゃないといけない
優先順位の問題があったとしても (*(f())) としないと
後置インクリメントが意図しない動作を起こすから
0102片山博文MZパンク ◆0lBZNi.Q7evd 2013/06/19(水) 20:46:06.00
>>100
構造体配列に名前や型のデータを保存、実データはmallocで確保
0103デフォルトの名無しさん2013/06/19(水) 20:48:59.95
>>100
どうやって使うつもりなの?
0104デフォルトの名無しさん2013/06/19(水) 20:50:32.51
>>100見て、BASICインタプリタ作りたくなってきたぜ…
0105デフォルトの名無しさん2013/06/19(水) 20:55:01.09
C言語インタプリタ作っておねがい
0106デフォルトの名無しさん2013/06/19(水) 20:57:32.10
>>104
関係あるの?
0107デフォルトの名無しさん2013/06/19(水) 21:00:40.05
>>101
なるほど。>>96はabc()++;するとコンパイルエラーになる。うかつだった。
ありがとう。

修正
ttp://ideone.com/n8G9Z7
0108デフォルトの名無しさん2013/06/19(水) 21:02:03.57
>>105
本当にCが必要なのかを慎重に検討すべき
0109デフォルトの名無しさん2013/06/19(水) 21:02:31.24
こういう危険性があるから
素人はマクロに手を出しちゃいけないよという実例
0110デフォルトの名無しさん2013/06/19(水) 21:37:42.53
>>100
配列とほぼ同等なもの(ポインタ+メモリ確保)を作ることはできる。
厳密な意味で配列とイコールなものをランタイムには作れない。
0111デフォルトの名無しさん2013/06/19(水) 21:44:27.02
インタプリタが作りたいのかな
構文解析がんばれ
0112デフォルトの名無しさん2013/06/19(水) 21:59:45.83
>>105
あるじゃん
0113デフォルトの名無しさん2013/06/19(水) 22:27:02.72
>>100
こんな感じだろうか
ttp://ideone.com/2iRLeD
0114デフォルトの名無しさん2013/06/19(水) 23:55:30.76
>>100
array[n] = *(array + n)を利用すれば
配列っぽいものを動的に作れる
0115 ◆QZaw55cn4c 2013/06/20(木) 01:23:48.07
>>105
http://root.cern.ch/drupal/content/cint
0116デフォルトの名無しさん2013/06/20(木) 03:22:40.21
main関数の外で宣言したaという変数と
main関数の中で宣言したaという変数がある場合

main関数の中で両方を別ものとして
読み書きするにはどうすればいいですか?
0117デフォルトの名無しさん2013/06/20(木) 03:49:44.59
mainの中の変数が参照される。素直に名前を変えるか、名前空間を使いましょう
0118デフォルトの名無しさん2013/06/20(木) 03:50:58.63
::a
0119デフォルトの名無しさん2013/06/20(木) 04:21:29.15
>>117>>118
スレ違い。
0120デフォルトの名無しさん2013/06/20(木) 07:30:58.80
>>116
Cだとできないので名前を変えよう
C++なら::aが外、aが中
0121デフォルトの名無しさん2013/06/20(木) 08:12:38.62
>>116
int a;
int* pa = &a;

int main(){
 int a;

 *pa = 1:
 a = 2;
 ...
0122デフォルトの名無しさん2013/06/20(木) 10:33:57.68
名前変えたほうが混乱しないよ
0123デフォルトの名無しさん2013/06/20(木) 14:36:08.66
混乱するのは低能だけ
0124デフォルトの名無しさん2013/06/20(木) 15:42:12.76
トリッキーなコードを書くのが格好いいと思ってる馬鹿が居るような気がする
0125デフォルトの名無しさん2013/06/20(木) 15:47:45.18
鳥なのかサルなのか馬なのか鹿なのかコモドオオトカゲなのかはっきりしろ
0126デフォルトの名無しさん2013/06/20(木) 15:56:48.32
コドモドラゴンてのがいてだな
0127 ◆QZaw55cn4c 2013/06/20(木) 16:13:12.08
いやむしろRhinogradentia/鼻行類のほうが
0128デフォルトの名無しさん2013/06/20(木) 18:06:49.04
鳥なのかサルなのかコウノトリなのかカッコウなのか馬なのか鹿なのかはっきりしろ
0129デフォルトの名無しさん2013/06/20(木) 18:57:17.50
鳥+ウッキーでトリッキーですかなるほど
0130デフォルトの名無しさん2013/06/20(木) 22:56:57.47
ふむふむ
0131デフォルトの名無しさん2013/06/21(金) 03:34:14.13
馬鹿というのは、馬や鹿みたいな知能の奴という意味ではなく
馬と鹿の区別をつけられない奴のことだと最近知った俺だった
0132デフォルトの名無しさん2013/06/21(金) 11:15:17.08
>>104
ttp://www.ioccc.org/2006/toledo2/
0133デフォルトの名無しさん2013/06/21(金) 15:36:45.64
iMac買ったんでC#でプログラミングしてみた。これ「\」と「_」の入力が罠すぎるだろ
http://engawa.2ch.net/test/read.cgi/poverty/1371785765/l50
0134デフォルトの名無しさん2013/06/21(金) 23:26:53.83
/の逆と\ってお互い一緒らしいですが違いあるんですか?
0135デフォルトの名無しさん2013/06/22(土) 00:54:36.09
ない
0136デフォルトの名無しさん2013/06/22(土) 00:57:52.11
バックスラッシュと円マークで
見た目が違う
呼び方が違う
文字コードによっては別々に割り当てられてるので全く別の文字
0137デフォルトの名無しさん2013/06/22(土) 01:03:30.97
たとえ表記上¥しかでなくても、バックスラッシュのところを打つ
0138デフォルトの名無しさん2013/06/22(土) 02:37:08.14
Visual Studio 2010を使用しています。
サンプル2ではエラーが出るのですが、サンプル1でエラーが出ないのはどうしてでしょうか。
よろしくお願いします。

●サンプル1
#include <stdio.h>
int a = 10;
int a;
int main(void)
{
return 0;
}

●サンプル2
#include <stdio.h>
int a = 10;
int a = 20;
int main(void)
{
return 0;
}
0139デフォルトの名無しさん2013/06/22(土) 02:48:56.86
>>138
まずエラーを書こう
01401382013/06/22(土) 03:03:03.46
>>139
すみません。以下の様なエラーが出ます。

> 'a' : 再定義されています。2 回以上初期化されています。
> 'a' の宣言を確認してください。

サンプル1では再定義と言われないのは何故なのか気になりました。
よろしくお願いします。
0141デフォルトの名無しさん2013/06/22(土) 03:18:17.85
>>140
情報の後出しウザい消えろゴミクズ
0142デフォルトの名無しさん2013/06/22(土) 04:19:29.71
138: サンプル2でエラーがでる
139: エラーの詳細は
140: これこれです
141: 後出しうざい、ゴミクズ

真面目な質問者と、ゴミクズだな

>>138
サンプル1は仮定義って言うんだよ
6.9.2. External object definition
2 A declaration of an identifier for an object that has file scope without an initializer, and
without a storage-class specifier or with the storage-class specifier static, constitutes a
tentative definition.
01431382013/06/22(土) 04:26:32.12
>>142
仮定義という概念を初めて知りました。
ありがとうございました。
0144デフォルトの名無しさん2013/06/22(土) 05:33:29.65
>>143
いいから二度と来るなよ。
社会のお荷物君。
0145デフォルトの名無しさん2013/06/22(土) 07:34:32.13
何で普通の質問にそんな噛み付くわけ?
0146デフォルトの名無しさん2013/06/22(土) 08:49:10.02
>>145
>>141>>144自身が「ゴミクズ」であり「社会のお荷物君」だからだろ
「投影性同一視」と言う
■ このスレッドは過去ログ倉庫に格納されています