• ベストアンサー

VBで三項演算子

CやPerlで三項演算子がありますが、 ret = (1 == 1) ? "真" : "偽"; VBはIFF関数?で同じようなことができますか? 注意点など知りたいです。

  • hdkoa
  • お礼率0% (1/117)

質問者が選んだベストアンサー

  • ベストアンサー
  • shobon
  • ベストアンサー率66% (14/21)
回答No.1

VBのバージョンがわかりませんが、とりあえずVB.NETのIIF関数のヘルプを載せておきます。 Object型が帰ってくるので、そこが注意点…というくらいで、特に気になるほど難しい要素はないかと思われます。

参考URL:
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vblr7/html/vafctIIF.asp

その他の回答 (1)

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

Perlの予約語にTRUE・FALSEはありましたっけ? 数値1・2などはCと同じTRUE(真)扱いで0はFALSE(偽り)ですよね。 IIf関数で条件式1==1でいけば評価対象の式を指定して名前付き引数=1で結果がTrue(真)の場合に返す値や式と結果がFalse(偽)の場合に返す値や式を指定します。ので同じです。 IIf([評価対象]=1,"True(真)","False(偽)") や IIf([評価対象]=1,1,0) となります。 >注意点など知りたいです。 IIf関数は評価対象の式の結果でTrue(真)の場合のに返す値や式かFalse(偽)の場合に返す値や式の片方だけ返されますが評価はTrue(真)の場合False(偽)の場合の両方の引数に対して行われるので評価対象の式で評価した結果が0による除算エラー等が発生する場合にTrue(真)であってもエラーが発生します。 そのくらいです。

関連するQ&A

  • 三項演算子のカッコについて

    C言語で三項演算子を用いて作成する場合、条件 ? (真の場合) : (偽の場合)のように、括弧をつけてコンパイルするとき、 なぜ括弧がないとコンパイルが通らないか教えてください。

  • 二項演算子"%"

    今,Red hut Linux8.0を使い、C言語でいろいろやってるんですが、二項演算子の%をプログラム中に入れると、 関数 `main' 内: 二項演算子 % が不適切です ってでます。友だちのOSLinux 7.3では出来たので、僕のOSだけできないのは不思議でたまりません。いったい何が原因なんでしょうか?

  • 二項演算子は2変数関数の1種だと言えるのですか?

    二項演算子は2変数関数の1種だと言えるのですか?

  • VBのBooleanはCではどんな方でしょうか? DLL

    元々、VB6のソースをCに書き直している最中ですが、 VBでintegerは Cではshortでよいのですが、VBでBooleanはCではどのように記述したらよいのでしょうか? 確かCは真が-1で偽が0だったと思いますが、それならば shortで定義して・・・ でうまくいくのでしょうか? VBから呼び出すCの関数のDLLを書いた事のある方、教えていただけますか? また、今の時代、DLLは古いでしょうか? だいぶ前のソースをいじくっております。

  • 論理演算、ビット演算

    C言語仕様上、真/偽は(Not0/0)であることは理解しています。また、処理順序から、論理演算とビット演算では評価対象の範囲が違うことも知っているつもりです。 その上で質問させていただきます。 お手数ですが、お解りになる方は教えていただけると助かります。 例えば、 i=0,j=0である場合 ( (i == 0) && (j == 0) )は真であると思いますが、 ( (i == 0) & (j == 0) )は規定されているでしょうか。 また、( (i == 0) | (j == 0) )は真となることが(理論上)保証されているように思えますが、問題ないでしょうか。 以上、よろしくお願いいたします。

  • my演算子について

    まだPerlをはじめたばかりの初心者ですよろしくお願いします。 my($ret, $MESS, $s); my(@PARAG, $PARAG); my(@VALANAME, $VALANAME); my(@DATA, $DATA); my(%NEEDDATA); 上記のように use strict;配下で宣言(っていうのかな?)を行っているプログラムがあります。 my演算子って複数の変数を一度に宣言することができるとどこかで呼んだのですが、上記のようにmy()を分けているのは便宜上の問題でしょうか? つまり my($ret, $MESS, $s,@PARAG, $PARAG,@VALANAME, $VALANAME); というように宣言していることと同じになりますか? ※VB出身者なため”宣言”という言葉を使っていますが、これについても正しい言葉遣いがあればご指摘ください。

    • ベストアンサー
    • Perl
  • 論理和演算子を使って、三項演算子のような簡易分岐ができるようなコードを

    論理和演算子を使って、三項演算子のような簡易分岐ができるようなコードを書けるという テクニックがあるというのを本で読んで試して見たのですが、うまくいきません。 本に書いてあるコードはこんな感じです。 bがなければ、cのプロパティであるdを、それもなければ、500をaに代入する。 bを削除するとdが代入されると思ったのですが、エラーになってしまいます。 //var b = 1; var c = new Object(); c.d = 2; var a = b || c.d || 500 ; どうやったらうまくいきますでしょうか?よろしくお願いします。

  • C#の??演算子に変わるものは?

    お世話になっております。 Visual Studio 2005にて開発していますが VBにおいてC#の??演算子に変わるものがあれば教えていただけませんか? ちなみに??演算子は newClass = class1 ?? defaultClass みたいな使い方で、左辺がNULLの時に右辺を適応します。 VBでは・・・ newClass = IIF( class1 Is Not Nothing , class1 , defaultClass ) みたいな書き方になるのでしょうか? 演算子がないものかなぁ・・と。 MSDNのVBの演算子を見てみましたが、それらしきものが発見できませんでした・・・

  • PerlでのUseless use...

    お世話になります。 真になる演算子が1を、偽になる演算子がundefを返すことを研究しています。 print "3 == 3:【", 3 == 3, "】\n"; であれば、3 = 3が1を返すので 3 = 3:【1】 となります。 print "3 > 4:【", 3 > 4, "】\n"; であれば、3 > 4がundefになるので 3 > 3:【】 になります。 さて、and 演算子を使ったところも見たいと重い、 print "3 == 3 and 3 > 4:【", 3 = 3 and 3 > 4, "】\n"; と書いて実行すると Useless use of a constant in void context at C:\Perl\perl\showAndTF.pl line 8. という警告と共に 3 == 3 and 3 > 4:【1 と出力されてしまいます。 これはなぜでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • 問題がとけません

    以下の問題がわかりません。 教えていただけますでしょうか? 以下の仕様を満たすプログラムを作成せよ。 キーボードから2整数を読み込み,読み込んだ順に標準出力にそれらの値の10進数表現をスペース文字で区切って1行に書き出し,改行する。読み込んだ一番目の整数の値が1000でなければ,次の2整数を読み込み同様に書き出す。一番目の整数の値が1000のときプログラムの実行を終了する。 ヒント------------------------------------------------- stdio.hをインクルードする。 読み込んだ値を保持するための2つの整変数を宣言して定義する。 2つの整数を読み込んで,その値を書き出すことを繰り返す部分は,次のdo-whileループで実現する。 do { (1) //2整数の読み込み //2整数の書き出し } while(条件); (2) プログラムの実行は上から順に行われるが,(2)で条件が真であれば(1)に戻り,そこから再び下方に順番に実行される。条件が真でなければ,(2)の次の行から下に順番に実行される。したがって,(2)の条件が満たされているかぎり,(1)と(2)の間を繰り返し実行することになる。このdo-whileループは,必ず1回は実行される点で,whileループと異なる。 行中に//があると,そこから行末まではコメントとみなされ書かれている内容は無視される。また,任意の位置に書かれた,一対の/*と*/の間もコメントとみなされる。 この課題の繰り返しの条件は,読み込んだ一番目の整数が1000でないこと。 iを整変数として, i != 1 という論理式の値は,iが1のとき偽,iが1でないとき真である。 2種類ある等値演算子の1つであるこの"!="という2項演算子(演算子の両側に1項ずつの2項を使う演算子)による演算結果は,両側の2つのオペランド(演算子が働きかけるもの)の値が「等しくない」とき真,それ以外のとき偽である。もう一つの等値演算子は"=="で,演算結果は2項が「等しい」とき真,それ以外のとき偽となる。