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


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

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



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

★前スレ
C言語なら俺に聞け(入門編)Part 94
toro.2ch.net/test/read.cgi/tech/1324648274/
★過去スレ
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++の宿題片付けます 155代目
toro.2ch.net/test/read.cgi/tech/1325685876/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

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

492 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 19:10:09.97 ]
じゃあ答えろよ


何をと訊かれても知らないが

493 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 21:36:33.96 ]
>>491何のプロなん?

494 名前:485 mailto:sage [2012/01/21(土) 21:52:58.18 ]
>>492
何を?

495 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 22:03:31.36 ]
>>494何のプロなん?

496 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 22:24:45.54 ]
>>482 に俺はプロだから答えられるって言うのもプロっぽくないよな。

497 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 23:07:06.97 ]
ああ成る程、プログラマ未満でプロか。

498 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 23:18:27.22 ]
何でID無いんだよ

499 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 23:20:27.02 ]
QZが自演できるようにだろ。

500 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 23:30:12.37 ]
ID化必要だよな



501 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 02:03:16.11 ]
C言語にsprintfがあることを知った時、感動したな

502 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 04:35:58.10 ]
>>501
昨日の俺だわw
strcatとか使う意味ないわwww

503 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 08:57:59.99 ]
sprintf使えるよな
win32apiでMessageBoxで変数の値を出力したいときとかも重宝する

504 名前:馬鹿で中2病な厨房 mailto:sage [2012/01/22(日) 14:34:55.78 ]
>>484
ありがとうございます

505 名前:デフォルトの名無しさん [2012/01/22(日) 16:15:06.90 ]
awabi.2ch.net/test/read.cgi/poverty/1327050821/3

506 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 18:09:40.27 ]
>>444です。
n = 10 * n + (s[i] - '0');
これの意味がわかりました。
ヒントを下さった>>448さん、ありがとうございました。
これはK&Rに載っているatoi関数、
int atoi(char s[])
{
int i, n;

n = 0;
for (i = 0; s[i] >= '0' && s[i] <= '9'; i++)
n = 10 * n + (s[i] - '0');
return n;
}
の一部分でした。

507 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 18:10:41.90 ]
K&Rに習って、自分でもatoi関数を書いてみました。
#include <stdlib.h>

int myatoi(char s[]){
char *p = s;
int i, j, n, length, len, sum;
int *ptr;

length = 0;
while (*p++)
length++;
ptr = calloc(length, sizeof(int));
len = length;
i = 0;
while (s[i] >= 0x30 && s[i] <= 0x39) {
ptr[i] = s[i] - 0x30;
n = 1;
for (j = 0; j < length - 1; j++)
n *= 10;
ptr[i] *= n;
i++;
length--;
}
sum = 0;
for (i = 0; i < len; i++)
sum += ptr[i];
free(ptr);
return sum;
}
-------------------------------------------
n = 10 * n + (s[i] - '0');
この式ってすごいうまいことやってるんですね

508 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 18:56:12.52 ]
#include<stdio.h>
#define NUMBER 5
int main(void)
{
int i;
int tensu[NUMBER]={0};
int b[NUMBER]={0};

puts("please put an points of your students");

for(i=0;i<NUMBER;i++)
{
printf("Student No.%d,Student point:",i+1);
scanf("%d",tensu[i]);
if(tensu[i]>=60)
b[i]=tensu[i];
}
puts("The success students are.....");
for(i=0;i<NUMBER;i++)
{
printf("student No.%d:%d points.\n",i+1,b[i]);
}
return 0;
}
コンパイルできるんですがどうも全て実行できません
16行目がいけないでしょうか?

509 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 19:05:41.91 ]
scanf("%d",&tensu[i]);

510 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 19:14:23.06 ]
\(^o^)/
ありがとうございます
初歩的なミスですね。。。



511 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 21:51:57.76 ]

就活中
(p)livedoor.blogimg.jp/jin115/imgs/3/1/31a6f8e6.jpg

就職後
(p)livedoor.blogimg.jp/jin115/imgs/2/b/2b790359.jpg

街の人(やらせ業者)募集中です



512 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 22:58:40.48 ]
平方根を求める関数sqrt(double x)は
「math.h」をインクルードすることで使えるようになりますが
このヘッダ内を文字列「sqrt」で検索しても、よくわかってないせいもありますが
それらしい計算式が見当たりません
sqrt関数はどのようにして、平方根を求めてるのでしょうか?
数学的な計算式は理解しています
math.h内でどのように処理されてるのか知りたかったので、聞いてみました
win7でVC2010を使用しています

513 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 23:15:17.23 ]
プログラム自体はふつう、objやlib、DLLなどにあります
ヘッダは宣言のみです

514 名前:デフォルトの名無しさん mailto:sage [2012/01/22(日) 23:21:47.22 ]
>>ヘッダは宣言のみです
勘違いしてました
ありがとうございます

515 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 01:00:27.01 ]
本来は使用する側が、関数が組み込まれているライブラリを指定するように作られてるが
標準関数や基本的な関数ははじめから組み込むようにコンパイラやIDEが指定してくれている。
このオマケのような仕組みのために間違えたんだろう。

516 名前:デフォルトの名無しさん [2012/01/23(月) 01:32:34.59 ]
C言語で二点の緯度経度から距離を求めることができますか。

517 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 01:36:10.21 ]
できない理由はありません。

518 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 01:37:30.57 ]
>>512
これはGNU libcのものだが、
とにかく高速である事が求められる数値計算系の実装は
パッと見て何をやっているのかさっぱり分からないことも多いw

sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/ieee754/dbl-64/e_sqrt.c

519 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 01:38:23.05 ]
ちゃんと考えると難しいな、高低は別としても

520 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 01:39:17.77 ]
>>516
できるよ
地球の中心を原点として2点の座標のなす角を
内積(内積が0に近いときは外積)から求めて半径を掛ければおk



521 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 01:42:00.26 ]
地球は楕円だから、その分を考慮した
やや大仰でめんどくさい式があったはず

522 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 01:43:42.87 ]
どこまでの精度が必要か明確にしないとな

523 名前:デフォルトの名無しさん [2012/01/23(月) 01:44:06.59 ]
>>517
ありがとうございます。
どのように行えばいいのでしょうか。

>>520
ありがとうございます。
むずかしそうな話ですね^^;

今探してたら
www2s.biglobe.ne.jp/~satosi/gmap/map_length.html
こういうのがあったんですが、これで可能でしょうか。


524 名前:デフォルトの名無しさん [2012/01/23(月) 01:45:31.89 ]
>>521
ありがとうございます。
ヒュベニの公式みたいなやつでしょうか。

>>522
制度は一応、mぐらいあれば大丈夫です。

525 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 01:49:23.81 ]
mまで必要ならもっと正確な計算が必要だな
その計算じゃ無理だし地形データと海抜情報も必要だろう

526 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 01:56:21.45 ]
緯度経度のほか高さも必要だな。
東京タワー一階と、展望台では移動距離違うしな。直線も。

527 名前:デフォルトの名無しさん [2012/01/23(月) 02:18:43.44 ]
>>525
ありがとうございます。
そうですか。
結構複雑な式になるんですかね^^;

>>526
ありがとうございます。
高さもですか。。。
高さは平らとして考えていました。

528 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 02:30:51.20 ]
そもそもの目的を言え。
m精度がいるのに高さ無視とか、どうせ大した意味もないんだろうけど。

529 名前:デフォルトの名無しさん [2012/01/23(月) 02:40:10.74 ]
>>528
はい。
2点の距離を図り速さで割って
そこまでにかかる時間を求めたいのです。

530 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 02:44:24.19 ]
だったら道路情報じゃねえか
話にならんわ



531 名前:531 mailto:sage [2012/01/23(月) 03:43:29.63 ]
系列データの始点座標(x,y) 移動方向dir ステップ数stepsといった
入力されたデータをテキスト形式でファイルへ保存しないといけないのですが
ファイルには-1076994648 2516192 8 1536358
といったわけの分からない数字が保存されます
どうすればいいでしょうか?
codepad.org/T7yR4vHH

532 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 03:49:24.86 ]
x,y,dir,stepsに適切なデータを代入してやればいい

533 名前:531 mailto:sage [2012/01/23(月) 04:11:49.03 ]
>>532 すいません具体的にはどういうことでしょうか?




534 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 04:20:00.15 ]
課題説明に記載されている書式なんてわからんから答えようが無い

535 名前:531 mailto:sage [2012/01/23(月) 04:36:55.59 ]
>>534 すいません課題説明はこちらです ideone.com/eZmWI
   ファイルの入出力以外は問題ないようです

536 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 04:43:16.68 ]
めんどくさいからよく読んでないけど
save_textfil(int startpos[][2], int movedir[][MAXMOVE + 1], int movesteps[][MAXMOVE + 1])
のように渡してそれらを順次出力するだけでは?

537 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 08:13:05.15 ]
まぁ、宿題スレに行け、と。

538 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 13:15:54.94 ]
宿題スレでは干されていました。

539 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 14:02:51.92 ]
じゃ、諦めろ。

540 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 20:16:49.74 ]
#include<stdio.h>

double asd(double dx,int no)
{
int i;
double tmp = 1.0;

for(i=1;i<=no;i++)
tmp *= dx;
return (tmp);
}

int main(void)
{
int n;
double x=0.0;

printf("No.1:");
scanf("%f",&x);
printf("No.2:");
scanf("%d",&n);

printf("answer=%.2f",asd(x,n));

return 0;
}
実行結果が
No.1:5.0
No.2:2
answer=inf
となります。なぜでしょう?



541 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 20:18:01.17 ]
>>540
%f だから

542 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 20:20:40.25 ]
#include<stdio.h>

double asd(double dx,int no)
{
int i;
double tmp = 1.0;

for(i=1;i<=no;i++)
tmp *= dx;
return (tmp);
}

int main(void)
{
int n;
double x;

printf("No.1:");
scanf("%4.1f",&x);

printf("No.2:");
scanf("%d",&n);

printf("answer=%.2f",asd(x,n));

return 0;
}
実行結果が
No.1:5.0
No.2:answer=inf
となりました\(^o^)/

543 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 20:25:04.22 ]
>>542
%4.1f だから

544 名前:デフォルトの名無しさん mailto:sage [2012/01/23(月) 20:27:58.60 ]
>>543
lですかぁ
ありがとうございます
本には1とかいてあるようにみえたので・・・

545 名前:デフォルトの名無しさん [2012/01/24(火) 20:07:37.80 ]
C言語を知っていれば、なんでもできると思う人います?

546 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 20:10:33.78 ]
そう思うやつはC言語を理解してない。

547 名前:デフォルトの名無しさん [2012/01/24(火) 20:32:53.92 ]
結局、基本はC言語だよね

548 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 20:37:02.06 ]
>>545
君の言う「なんでも」というのが「妹を作りたい」とか
「ヨガファイアを身に付けたい」とか云うことなんだとすれば、
そんなことを思う人はキチガイだ。

549 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 20:37:21.10 ]
>>545
はい

550 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 20:46:11.59 ]
C言語を始めたいと思ったんだけど、「Borland C++ Compiler 5.5」の設定ができない…
ilink32.cfg は拡張子変更できたんだけどbcc32.cfg が .txtファイルのままになってしまう



551 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 20:50:19.84 ]
>>548
自己紹介乙。

552 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 20:53:55.18 ]
>>550
setbccでググるといいかも

553 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 20:56:02.76 ]
>>545
Cを知っていれば他の言語は簡単、みたいな意味だったら20年くらい前はよくそんなこと言われてたなって感じ。

554 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:00:30.49 ]
「妹を作りたい」、「ヨガファイアを身に付けたい」と言う理由で
C言語を学ぼうと思った人がいるかも知れない。

555 名前:デフォルトの名無しさん [2012/01/24(火) 21:02:51.91 ]
同一翻訳内で同じ文字列は、
同じ領域に割り当てられると
規格で保証されていますか?

char *amanojaku(char *str)
{
 return str == "YES" ? "NO" : "YES";
}
char *say(char *str)
{
 printf("%s,", str);
 return str;
}
main()
{
 // VCでは期待通り、"YES,NO,YES"と出力された
 say(amanojaku(say(amanojaku(say(amanojaku("NO"))))));
}

556 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:07:14.39 ]
>>555
"YES,NO,YES,"になると思うけど
保証されないはず

557 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:07:31.46 ]
>>555
× str == "YES" ?

558 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:10:04.14 ]
>>547
違うな。
ゴールに近い言語を使うのが正解。

VBで目的が達成できるものに、Cを敢えて使う理由なんか、無い

559 名前:デフォルトの名無しさん [2012/01/24(火) 21:12:47.63 ]
char型の数字を配列にいれたいんですけど
どうすればいいんですか?
char a[10]=

560 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:13:58.37 ]
>>558
大概excelで出来ちゃうので、プログラムくむ必要がなくなる。



561 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:14:11.05 ]
>>555
コンパイラオプションによる。

562 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:14:35.89 ]
>>559
char a[10] = { 1, 2, 3 };

563 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:15:04.56 ]
数値じゃなく数字なら
char a[10] = { '1'. '2'. '3' };

564 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:15:26.43 ]
>>555
コンパイラ依存だったような。

>>557
この話でそこに突っ込みを?

565 名前:デフォルトの名無しさん [2012/01/24(火) 21:22:10.34 ]
a3b4と入力したらaaabbbbと出力するようにしたいんですが
できません。
教えてくれませんか?

566 名前:555 mailto:sage [2012/01/24(火) 21:24:14.11 ]
>>556
やっぱり保証はされないですか
残念です。

>>561
具体的にこのオプションがあればOKとかあれば
注意書きして、この方法を使ってみたいのですが

>>564
大抵のコンパイラならOKそうな気がするんですけどね

567 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:30:16.43 ]
>>565
ab3と入力したら
・abbb
・aaabbb
どっちになるの?

あと0の扱いは?
a01bb2
とかの文字列はどう解釈すんの?

プログラム以前の問題だ

568 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:30:57.36 ]
>>555
文字列の比較ならstrcmp()使えよ

569 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:32:06.26 ]
>>567
ab3 => abbb
a3b3 => aaabbb
a01bb2 => abbb

570 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 21:32:54.55 ]
>>565

ab0c12d5
こういう入力だと、出力はどうしたい?



571 名前:デフォルトの名無しさん [2012/01/24(火) 21:36:16.27 ]
>>567
すみません。
数字の0と1は入力ミス扱い。
連続した数字も入力ミス扱い。
二桁以上も入力ミス扱い。
ab3はabbbとなります。
お願いします。


572 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 22:00:55.70 ]
>>571
念のため聞くけど、
「連続した数字」と「二桁以上(の数字?)」は何か違う全くベツのモノ?


573 名前:デフォルトの名無しさん [2012/01/24(火) 22:08:36.77 ]
>>572
同じです;;
二桁以上の数字は入力ミス扱いです
a10やa23など。

574 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 22:13:00.32 ]
>>573
もう少し聞くけど、
もしかしてその文字列は「数字から始まってはいけない」とかいうルールがあったりしない?

575 名前:デフォルトの名無しさん [2012/01/24(火) 22:19:19.40 ]
数字から始まってはいけないですね〜

まぁ早く解いて。


576 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 22:28:23.66 ]
正体は社交場かなんかと勘違いしてるお子チャマか

577 名前:デフォルトの名無しさん [2012/01/24(火) 22:31:54.75 ]
あー気持ちわりいなお前
明らかにお前の方がなめてただろ
こっちがいらつくのはあたり前だろ
早く寝ろおっさんw

578 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 22:41:42.77 ]
ワロタ

パターンマッチングの精度半端ねーな

579 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 23:43:34.53 ]
>>565
#include <stdio.h>
#include <string.h>
int mprint(char *str)
{
int i, len, n;
len = strlen(str);
for (i=0; i< len; i++) {
char a = str[i];
if ('0' <= a && a <= '9') return 1;
else{
char b = str[i+1];
if ( b == '0') return 1;
if ('1' <= b && b <= '9') {
n = (b - '0'); i++;
} else n = 1;
while (n-- > 0)putchar(a);
}
}
return 0;
}
int main()
{
char buf[256];
printf("input:");scanf("%s",buf);
mprint(buf);
return 0;
}

580 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 23:51:28.42 ]
>>566
gccで-fwritable-stringつけたら動かないんじゃないの



581 名前:デフォルトの名無しさん mailto:sage [2012/01/24(火) 23:52:52.47 ]
strings、だったごめん。
manから引用
> -fwritable-strings
> 文字列定数を書き込み可能なデータセグメントに配置し、同内容の文字列を 1 つの共有オブジェクトにする処理を行いません。これは、文字定数に書き込むことができることを仮定した昔のプログラムとの互換性をと
> るために提供されています。‘-traditional’ オプションも同様の効果を含みます。
>
> 文字定数に書き込むという考えは非常によくない考えです。“定数” はまさに定数であり、変化すべきではありません。

582 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 00:52:06.30 ]
>>555
これでいけ
#include <stdio.h>
#include <string.h>

char *amanojaku(char *str)
{
return strcmp(str, "YES") == 0 ? "NO" : "YES";
}
char *say(char *str)
{
printf("%s,", str);
return str;
}
int main()
{
say(amanojaku(say(amanojaku(say(amanojaku("NO"))))));
return 0;
}

583 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 00:56:52.34 ]
確かにstrcmp()で何の問題があるのかとは思うけど

584 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 01:05:34.77 ]
そんな話なのか?
それなら単に2つポインタ使えばいいだけじゃねーのか。

585 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 07:14:03.55 ]
単に規格の範囲を疑問に思っただけなのか
「同じ領域に割り当てられると保証されて」いてほしい理由があって聞いたのか
どっちでしょうね

586 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 08:01:41.80 ]
保証されている前提で書いた自分のプログラムをなんとか正当なものにしたいんじゃね?
仕事だったらありえねぇ馬鹿だがw

587 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 08:31:02.40 ]
何で攻撃しまくりなんだよw
マクロで文字列リテラルが展開されまくったとき、exe サイズ膨れ上がらないかとか
さらにそのソースはいろんなコンパイル環境で使いまわすとか
気にしなきゃいけない可能性はいろいろあるだろうに

588 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 08:34:18.18 ]
使いまわすようなコードに
文字リテラルなんて埋め込むなよ

589 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 09:27:52.57 ]
>>587
もしそういう要求があるなら尚のこと、コンパイラ任せにするべきじゃない。
例えば、リテラルへのポインタを返す関数を用意しておけば済むことだ。
それにどうせ、マクロを使ったってリテラルの連結をする場合は別領域だ。

590 名前:デフォルトの名無しさん [2012/01/25(水) 12:24:43.54 ]
こういうマクロは規格上許されていますか?
VC2008では再帰展開は行われず、aaaがbbb aaaに展開されます。

#define aaa bbb aaa



591 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 12:37:28.66 ]
>>590
Cリファレンスマニュアルによれば、規格上はアリ。ただし古い処理系だと
再帰展開して止まらなくなってしまうケースがあったようだ

592 名前:デフォルトの名無しさん mailto:sage [2012/01/25(水) 12:51:22.39 ]
>>591
ありがとう。これで安心して使えます。






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

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

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