if(A == 0 || B == 5 || C >= 4 ・・・) ;みたいにいくつかの条件のうちあてはまってたら処理をする
と書くのが普通ですが
A == 0,B == 5,C >= 4 ・・・等のように条件を書いてソースを見やすくはできないでしょうか?
このようなやり方でなくてもソースが短く見やすく書ければ助かります。
C++ VS2005 XP
#define IF_OR2(b1,b2) if((b1)||(b2)) #define IF_OR3(b1,b2,b3) if((b1)||(b2)||(b3)) #define IF_OR4(b1,b2,b3,b4) if((b1)||(b2)||(b3)||(b4)) #define IF_OR5(b1,b2,b3,b4,b5) if((b1)||(b2)||(b3)||(b4)||(b5)) #define IF_OR6(b1,b2,b3,b4,b5,b6) if((b1)||(b2)||(b3)||(b4)||(b5)||(b6))とマクロ定義(上記は6条件まで用意)して、
IF_OR3(A == 0,B == 5,C >= 4)で出来ます。(ちょっと使いづらいと思いますが)
//条件--------------------------- bool A = ( a != 0 ) ;//aは0以外よ bool B = ( b == 5 ) ;//bは5なんだ bool C = ( c >= 4 ) ;//cは4以上じゃ bool D = ・・・・・ if( A || B || C ・・・・){ ・・・・・ ・・・ }こんなのはどうでしょうか?
#include <stdio.h> int main(void) { int n; printf("数字を入力してねっ -> "), scanf("%d", &n); /* 普通のif文 */ if (n < 0 || n == 5 || 8 < n) { printf("にゃんにゃん\n"); } /* &&演算子の式評価に依存してみる */ (n < 0 || n == 5 || 8 < n) && printf("あぅあぅ\n"); return 0; }で、書いてみて思ったこと。大して見やすくならない(笑)
#define hoge(a,b,c,d) (((a)<8 && (a)>-1) && ((b)<8 && (b)>-1) && ((c)[(a)][(b)]==(d))) if(hoge(a,b,c,d)) puts("あーだこーだ");こんなんですかね
#include<cstdio> using namespace std; class Bool_op{ bool b; Bool_op():b(false){} Bool_op& operator,(bool op){ b=b||op; return *this; } operator bool(){bool temp=b;b=false;return temp;} }bool_expr; int main() { int a,b,c; printf("適当に整数を3個入力してください:"); scanf("%d%d%d",&a,&b,&c);//適当に整数を入力させる。 if(bool_expr,a!=0,b==5,c>=4)puts("条件に合致しました"); else puts("残念ながら、条件に合致しませんでした。"); return 0; }カンマ演算子(呼び方合ってるかな?)はオーバーロードできるので、適当にクラスを用意して、それとboolに対してオーバーロードしています。