
No.3ベストアンサー
- 回答日時:
プログラムを数学は分けて考える必要があります。
> x = a + b
> 等の数式ではただの = 一個を使いますよね?
これを、数学的に「 x は a+b に等しい 」だと考えてはいけません。
それだと、プログラムでよく出てくる
a = a + 1
等は成立しません。
代入といって、意味としては「xを a + bにする」となります。もっと直感的な記号を使うなら「 x ← a + b 」となるでしょう。
代入と区別するために、数学的な「等しい関係」を表現する等号には「==」を使います。
C言語では、 = は代入演算子といって、式の一部です。代入した値を「式の値」とします。その「式の値」をそのまま利用したり、別の式の一部として利用したりできます。
よく見掛ける
while( ( c = getchar() ) == '\n' )
だと
1) ( c = getchar() ) を評価。 getchar()の値を cに代入。全体としてその代入した値になる。
2) 1)の値と '\n' を比較して、等しければ真(非0),等しくなければ偽(0)。ここでは代入は無い。
という意味になります。
このあたりの使い方は言語によって違います。
・文脈で使いわける
・=は比較で、代入には別の記号を使う
・代入は命令で、式の一部としては利用できない
など
No.4
- 回答日時:
'='が代入演算子、'=='が等値演算子というものは、他の方の説明通りです。
代入演算子についてはもうひとつ大事な観点があり、代入演算子の左辺では評価結果が左辺値となり、
格納した値を表す右辺値の場合とは意味合いが異なるということです。
int x = 10;
x = x + 1;
とある場合、左辺値は値を格納する入れ物としてあつかわれていて、右辺値としては、格納されている10として扱われる、ということです。
No.2
- 回答日時:
"代入演算子"と"比較演算子"ということで明確に違う系統の"演算子"です。
幾つかの言語系では、= が使われる場所によってインタプリタやコンパイラがどちらかを判断しているものがありますが、C では「演算子」としてどこでも使えるものなので、明確に違うものを用意しています。代入演算子は、「変数に値を代入し、代入した値を返す」演算子
比較演算子は、「2つの値を比較し、その結果を真偽値で返す」演算子
です。
int a=1;
printf("%d\n", a==5);
printf("%d\n", a=5);
printf("%d\n", a==5);
printf("%d\n", a=6+3);
printf("%d\n", a==(a=6+3));
こんな感じで、各演算子は値を返していることがわかるかと思います。if や while などは、() の中が 0 かそれ以外か、を判断しているに過ぎません。
No.1
- 回答日時:
代入が = で、等値比較が == です。
数学の = が、Cの == にあたります。C以外の多くのプログラミング言語でもそうですが。
Cの = は、数学では、「~を~と置く」などと表現されますね。「x = a + b」だと、「a+bをxと置く」。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラム内から、MIDIファイルの一部分だけを再生する方法 1 2023/02/15 11:08
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- IT・エンジニアリング FORTRAN、COBOL、C、Java、C++とか誰が作ったのですか?言語習い使いまた出て、キリが 4 2023/05/06 23:11
- C言語・C++・C# c言語で自然数nを入力、2以上n以下の偶数の累積sumを求めるプログラムをfor文を使って作りたいで 4 2022/11/09 14:10
- C言語・C++・C# 参考にいろいろとc言語、c++言語プログラミングでレジストリーを操作したいのですが、無料配布のc++ 3 2022/12/22 01:49
- C言語・C++・C# C言語について。 3 2022/11/05 20:30
- C言語・C++・C# c言語 コマンドライン引数 4 2023/02/09 18:47
- C言語・C++・C# C言語について教えて欲しいです。 ファイルの中身をコピーするプログラムを作ってます aというファイル 7 2022/11/03 19:21
- C言語・C++・C# C言語です このプログラムに自分で定義した関数を入れたいです! アドバイスください! 4 2023/02/05 03:20
- C言語・C++・C# C言語の質問です。バイナリ形式で保存されたWindows Bitmap形式の画像ファイルを読み込み、 3 2023/07/19 14:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでダブルコーテーション入り...
-
VBA 1行で複数の代入を行った...
-
URLが開いた後に処理したい
-
IEEE規格で「いちばん近い偶数...
-
[VBS]変数を定数に変換する方法...
-
エラーの意味は? Lvalue req...
-
Variant型で宣言してるのにEmpt...
-
final変数について
-
processing エラーで、 "cannot...
-
テキストボックスの値を変数に...
-
java 乗算をシフト演算と加算を...
-
Excel-vba 文字列と変数を...
-
C言語 exitの使い方
-
フォームを開くときに、コンボ...
-
Windows11のカメラで動画を撮り...
-
[開通手順]ネットワーク設定が...
-
excelの、ある数式内の{}の意...
-
4択問題のプログラムでランダム...
-
HTML上の2つの連動するプルダウ...
-
配列の値を置換するにはどうす...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでダブルコーテーション入り...
-
エラーの意味は? Lvalue req...
-
EXCEL/VBA 変数の値をクリップ...
-
jsp~jspにhiddenを使って変数...
-
整数xxxが大き過ぎますというエ...
-
C言語 アロー演算子について質...
-
[VBS]変数を定数に変換する方法...
-
Variant型で宣言してるのにEmpt...
-
テキストボックスの値を変数に...
-
processing エラーで、 "cannot...
-
Accessコンボボックスにレコー...
-
DataTableの値を変数に代入したい
-
条件演算子 ? :
-
インクリメント演算子の前置(+...
-
プログラミングで変数と関数の...
-
gridViewの行選択解除
-
無名関数のメリットがよくわか...
-
stdpicture型の変数に、、
-
論理演算子について
-
COBOLの変数
おすすめ情報