【初心者歓迎】C/C++室 Ver.28【環境依存OK】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/06/09(金) 10:08:51ただしその場合、質問者は必ず、環境を書きましょう。
※sageは禁止です。
【前スレ】
【初心者歓迎】C/C++室 Ver.27【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1147183708/
【アップローダー】(質問が長い時はココ使うと便利)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
0951デフォルトの名無しさん
2006/07/04(火) 19:14:280952デフォルトの名無しさん
2006/07/04(火) 19:23:00実行した限りでは、a , (b ? (c , d) : e) , f だな。
これはごく普通の挙動だ。
= だとなぜ C と C++ で変わるんだろうか?
ああ、俺のコンパイラは gcc/g++ 3.4.4 ね。
0953944
2006/07/04(火) 19:25:41ああ、ごめん。
自分が試したコンパイラ=正しい、VC6=間違いと思い込んでしまっていた。
ところで規格をあたってみたら、たしかにCとC++ではその定義が異なっている。
X3010ではこう。(PDF P69-70)
6.5.15 条件演算子
条件式:
論理OR式
論理OR式 ? 式 : 条件式
ところがX3014ではこうなっている。(PDF P73-74)
5.16 二択条件演算子
二択条件式:
論理和式
論理和式 ? 式 : 代入式
X3014の付随書C(Cとの非互換の機能の説明がある)にも何も書かれていない。
0954デフォルトの名無しさん
2006/07/04(火) 20:02:25初めてわかった気がした。
0955デフォルトの名無しさん
2006/07/04(火) 21:03:540956デフォルトの名無しさん
2006/07/05(水) 02:45:45三項演算子の右項で普通代入式なんか書かねーよw
0957デフォルトの名無しさん
2006/07/05(水) 02:48:22なるほど。
C++ だと ? : の仕様として、
最右項に代入式があったら括弧なくても通るようになってんのか。
こんな仕様変更、始めて知ったな。
0958デフォルトの名無しさん
2006/07/05(水) 10:41:32結合なので、括弧なしで結合するのが正しい構文解析だと思うのだが、
# ちなみにカンマは左からの結合
0959デフォルトの名無しさん
2006/07/05(水) 11:15:270960デフォルトの名無しさん
NGNGVC7でやってみた。
コンパイルは通るが、実質的にno effect。
int main(void)
int x=10, y=20, z;
char tmp[100];fgets(tmp,sizeof(tmp),stdin);z=atoi(tmp);
z&1?x:y = 0; //←no effect?
printf("x=%d,y=%d,z=%d\n",x,y,z);
return 0;
}
当然の事ながら、こうしたら期待した結果を得られた。
*(&(z&1?x:y)) = 0;
0961デフォルトの名無しさん
2006/07/05(水) 14:09:48それだと第3項が代入になるんじゃない?
0962デフォルトの名無しさん
2006/07/05(水) 14:12:43括弧足りないし
(z&1?x:y) = 0 がやりたいことじゃないの
>>959
出来ない。
>>953はC++で可能になったことが追加されているわけでしょ。
だから非互換ではない。あくまで追加。
0963デフォルトの名無しさん
NGNG0964デフォルトの名無しさん
2006/07/05(水) 15:38:38機能からこれが気になってしょうがない。
ネタじゃなかったらC++を窓から放り投げるぞ。
コンパイラだけは使うけど…
0965デフォルトの名無しさん
2006/07/05(水) 15:53:55>847
0966デフォルトの名無しさん
2006/07/05(水) 16:01:19ガセであることがすぐわかってつまらない。
0967デフォルトの名無しさん
2006/07/05(水) 16:08:07例えば開発期間が長くなるとかetc
0968デフォルトの名無しさん
2006/07/05(水) 16:10:320969デフォルトの名無しさん
2006/07/05(水) 16:13:040970デフォルトの名無しさん
NGNG0971デフォルトの名無しさん
2006/07/05(水) 17:12:42結合規則は優先順位が同じもの同士じゃないと意味がないのでは・・・。
0972デフォルトの名無しさん
2006/07/05(水) 19:51:21機構を実現したいのですがどうしたらいいのでしょうか?
やはりwhileで変数を見張り続けるしかないのでしょうか?
わかりづらい質問ですが、どなたかわかる方がいらっしゃったら教えていただけ
ないでしょうか?
0973デフォルトの名無しさん
2006/07/05(水) 20:11:54> 開発期間が長くなる
教科書的な回答をするとしたら、
「それはC++に熟練していない人間が関わるからだ。」
0974デフォルトの名無しさん
2006/07/05(水) 20:38:19pthread_wait とかあった気がする。
0975デフォルトの名無しさん
2006/07/05(水) 20:42:14シグナルでも送れば?
0976デフォルトの名無しさん
2006/07/05(水) 21:12:19なこたない。
0977デフォルトの名無しさん
2006/07/05(水) 21:51:15として、自スレッドを一時停止させようとしているのですが、うまくいかないのです。
何か根本的に間違っている気がするのですが、、pthreadの資料少なすぎ orz
0978955, 958, 976
2006/07/05(水) 21:57:10手元のK&Rのapendixに乗ってるBNRをまじめに追いかけてみたら、
確かにCでは第3項は代入式としては解釈されない、、、
# 手元に最新の規格ないので古い資料ですが、、、(ANSI1989版相当)
>>953の言っているように、生成規則自体が変わっているのだね…
そもそも、結合則に関して勘違いした状態で
知ったような口をたたいて申し訳なかった。
0979デフォルトの名無しさん
2006/07/05(水) 22:07:16×BNR
○BNF
、、、、、旅に出ます、、、、
0980デフォルトの名無しさん
2006/07/05(水) 22:56:42cond_waitするんだから、第一引数は当然condition objectを渡さないとイケナイ。
http://www.mtl.t.u-tokyo.ac.jp/~nminoru/pc/event.txt
ここらをみるといいかもしれんし、manする方が早いかもしれない。
0981デフォルトの名無しさん
2006/07/06(木) 10:05:00ありがとうございます。
う〜ん、しかしやっぱりスレッド一時停止してくれません orz
pthreadのmanでも見るしかないのか。。。
0982デフォルトの名無しさん
2006/07/06(木) 10:09:440983デフォルトの名無しさん
2006/07/06(木) 11:48:45(953のX3010と同じ)
第二のオペランドと第三のオペランドが、同じ型であり、
どちらも左辺値である場合、式の結果も左辺値である。
例をあげる。
int a,b;
x?a:b = 1; // ok
ARM19.1
conditional-expressionとassignment-expressionの構文は、
(throw-expressionを許すために)、以下のように変更された。
(略 953のX3014と同じ)
例をあげる。
i ? x=y : x=z; // i ? (x=y) : (x=z) を意味する
0984937
2006/07/06(木) 17:00:35ARMですか…。もう読んだの10年以近く前でした。
D&Eの横に置いてあったんだけど目に入ってなかったです。
皆さんの書き込みで大体納得できました。
直感に従うように変更された、という感じですね。
0985デフォルトの名無しさん
2006/07/07(金) 01:14:430986デフォルトの名無しさん
2006/07/07(金) 23:13:260987デフォルトの名無しさん
2006/07/07(金) 23:36:37どうしよう
0988デフォルトの名無しさん
2006/07/08(土) 00:11:11おいしいもの食ってうんこすればなおるよ!
0989デフォルトの名無しさん
2006/07/08(土) 19:00:57ハ_ハ
('(゚∀゚∩ なおらなかったよ!
ヽ 〈
ヽヽ_)
0990デフォルトの名無しさん
2006/07/08(土) 19:50:26#include <stdio.h>
#include <curses.h>
int main(void)
{
printf("Enter a letter: ");
printf("That letter is %c.\n",getch());
return(0);
}
というプログラムなんですがコンパイルして実行してもgetch()の部分がすっ飛ばされて終了してしまいます
Linux環境でgetch()をどうしても使わなくてはいけないのですが何か解決法はないでしょうか?
0991デフォルトの名無しさん
2006/07/08(土) 20:03:13curses使いたいならちゃんと手順を踏んで使おう
適当にぐぐった使用例:
ttp://www.h7.dion.ne.jp/~matsu/feature/c-language/index.html#feature.c-language.curses
0992デフォルトの名無しさん
2006/07/08(土) 22:48:250993デフォルトの名無しさん
2006/07/08(土) 22:53:56Cursesきつそうなら↓を参考に。
http://search.luky.org/fol.2002/msg00636.html
http://www.slayers.nu/~kumasaka/Gyoumu/kbdhit.html
UNIXプログラミングスレの方が適当だろうね。
ANSI Cにはない機能だから。
0994デフォルトの名無しさん
2006/07/08(土) 22:59:310995デフォルトの名無しさん
2006/07/08(土) 23:05:45【初心者歓迎】C/C++室 Ver.29【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1152367512/
0996デフォルトの名無しさん
2006/07/08(土) 23:12:470997デフォルトの名無しさん
2006/07/08(土) 23:46:390998デフォルトの名無しさん
2006/07/09(日) 00:00:430999デフォルトの名無しさん
2006/07/09(日) 00:01:28↓m9(^Д^)プギャーッ
1000デフォルトの名無しさん
2006/07/09(日) 00:01:5710011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。