質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

BASIC

BASICとは、手続き型言語の一つ。英語に準した簡易な記述になっており、基本的には初心者向けのプログラミング言語です。1970年代以降のコンピュータでよく使用された言語で、様々な拡張を加え現在も利用されています。

Q&A

解決済

4回答

846閲覧

BASICの演算子

fermat

総合スコア183

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

BASIC

BASICとは、手続き型言語の一つ。英語に準した簡易な記述になっており、基本的には初心者向けのプログラミング言語です。1970年代以降のコンピュータでよく使用された言語で、様々な拡張を加え現在も利用されています。

1グッド

1クリップ

投稿2017/03/10 04:20

BASICの演算子についての質問です。

C言語は代入が「=」、等価が「==」ですが、
BASICでは代入も等価も「=」となっているそうです。

どうやって使い分ければ良いのでしょうか。
等価として「=」を使いたい場面で代入として認識されないようにするための対策はあるのでしょうか。
等価の判断をさせたい場面で代入されてしまっていると気づくにはどうしたらいいのでしょうか。
(printで出力してもわからないです。)

よろしくお願いします。

yohhoy👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

C では if (a = b = 1) のような書き方ができます。この時、代入と比較が同じ演算子であったら複数の意味を持ってしまいます。例えば、(a = b == 1) と (a == b = 1) では意味が違ってきます。また、a = 0 は、C では必ず false と判定されますが、a == 0 は a の現在の値によって結果が変わります。

BASIC はそもそもそのような書き方ができません。比較の使える文脈と代入の使える文脈は明確に違います。だから同じ記号で問題ないのです。

本来 BASIC では LET A = 1 のようにコマンドを使って代入しますが、ほとんどの BASIC ではそれが省略できます。なぜなら文脈で判断できるからです。

投稿2017/03/10 04:54

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fermat

2017/03/10 05:17 編集

回答していただきありがとうございます。 COMコマンドを書いているのですが、ie.readyState=4の部分で理解が行き詰まっているところです。 //インターネットを開く。ビジー状態が終わり読み込みが完了するまでSLEEPで待機 IE = CreateOLEObj("InternetExplorer.Application") IE.Visible = True IE.Navigate("http://サイトのURL") BusyWait(IE) //------ Procedure BusyWait(ie) repeat Sleep(0.2) until (! ie.busy) and (ie.readyState=4) //ie.readyStateが4だと読み込み完了になる Fend 文脈で判断できるとのことですが、普通に書いていれば特に問題もないのでしょうか。。。 例えば、上記スクリプトではie.readyStateに4が代入されることはありませんか。 ie.readyStateが4の状態になったか否か等価で判定したいと思っています。
Zuishin

2017/03/10 05:30

until の条件式として書かれているので比較です。代入にはなりません。until while if など条件を求めるところでは式として評価されなければならないので比較になります。
fermat

2017/03/10 11:01

>until の条件式として書かれているので比較です。 教えて下さりありがとうございます。 文脈で判断という意味がどういうことなのか分かってきました。C言語と違うのでモヤモヤしていたのですが質問してよかったです。PowerShellを知ると、今までのパソコンがまるで違うツールのように見えてくるようで、色々なスクリプトを試している最中です。また分からないことがあったら、お願いします。
guest

0

等価の判断をさせたい場面で代入されてしまっていると気づくにはどうしたらいいのでしょうか。

そういうケースはありません。

強いて間違いそうな点を探すと、A=1 B=1をC等のつもりで、A=B=1と書くと間違い。
A=B=1は他の言語だと、A=(B==1)ということです。

投稿2017/03/10 05:41

otn

総合スコア84555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fermat

2017/03/10 11:04

はっきり断言していただけると、言語を全くわからない者にとっては前に進めるエネルギーになります。 ありがとうございます。
guest

0

たしかにBASICでは代入も等価も'='ですが、その部分でなにをしているかが明確なので深く考えなくてもいいのではと思います。例えば
IF a=0
なら等価ですし、
a=0
だけなら代入です。自動判別?ですかね。

投稿2017/03/10 04:55

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fermat

2017/03/10 11:04

頭が固く…自動判別という発想がなかったので、そうかと腑に落ちました。 ありがとうございます。
guest

0

代入は文で
等価比較は式です
よって書いてある場所で文法的に識別されます。

というわけで、

等価として「=」を使いたい場面で代入として認識され

ることがありません。

投稿2017/03/10 04:54

ozwk

総合スコア13521

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fermat

2017/03/10 11:09

>代入は文で >等価比較は式です 文と式について基礎知識も怪しいままキーボードを打っていました。入門書を振り返って読み飛ばしたところが大切だったのかと気づくことができました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問