質問です。初歩的な質問です。

シングルクォートとダブルクォートの違いについて質問です。
シングルクォートでエスケープできるものでダブルクォートでエスケープできないものがない気がします。
まだ勉強中なのでこれからプログラムを作る上では必要になってくるんでしょうか?


回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2008/05/01 18:52:12
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:wizemperor No.1

回答回数379ベストアンサー獲得回数52

ポイント20pt

PHPでしょうか?

通常の文字であれば、シングルクォートだけでも十分です。

ダブルクォートは特殊文字や変数などが解析されます。

$name = "A";
$text = "あなたは{$name}さんですね\n";  // あなたはAさんですね(改行)
echo $text;

$text = 'あなたは{$name}さんですね\n';  // あなたは{$name}さんですね\n
echo $text;

$text = 'あなたは' . $name . 'さんですね' . "\n";  //シングルクォートで変数等を結合する場合はこんな感じ

シングルクォートでは変数や特殊文字は解析されずにそのまま出力されます。

最後の例のような使い方をすれば、シングルクォートでも問題ありません。

むしろ、シングルクォートのほうが、余計な解析が行われないので実行のスピードもわずかに速くなりますね。


http://d.hatena.ne.jp/kasahi/20070815/1187201809

id:kasai-de_eb

丁寧に解説して頂きありがとうございます。

参考になりました。

2008/05/01 18:50:03

その他の回答4件)

id:wizemperor No.1

回答回数379ベストアンサー獲得回数52ここでベストアンサー

ポイント20pt

PHPでしょうか?

通常の文字であれば、シングルクォートだけでも十分です。

ダブルクォートは特殊文字や変数などが解析されます。

$name = "A";
$text = "あなたは{$name}さんですね\n";  // あなたはAさんですね(改行)
echo $text;

$text = 'あなたは{$name}さんですね\n';  // あなたは{$name}さんですね\n
echo $text;

$text = 'あなたは' . $name . 'さんですね' . "\n";  //シングルクォートで変数等を結合する場合はこんな感じ

シングルクォートでは変数や特殊文字は解析されずにそのまま出力されます。

最後の例のような使い方をすれば、シングルクォートでも問題ありません。

むしろ、シングルクォートのほうが、余計な解析が行われないので実行のスピードもわずかに速くなりますね。


http://d.hatena.ne.jp/kasahi/20070815/1187201809

id:kasai-de_eb

丁寧に解説して頂きありがとうございます。

参考になりました。

2008/05/01 18:50:03
id:pahoo No.2

回答回数5960ベストアンサー獲得回数633

ポイント20pt

どのようなプログラミング言語を指して質問されているのか分かりませんが、一般的にシングルクォーテーションとダブルクォーテーションの評価は異なります。


たとえば、PHPでは、2つのクォーテーションの評価方式が異なるので、エスケープのされ方も異なります。シングルクォーテーションでは \ マークは通常文字として扱われますが、ダブルクォーテーション内ではエスケープ文字として評価されます。


また、SQL文では、一般的に文字列はシングルクォーテーションで囲みます。

ところが、ダブルクォーテーションで囲んでも文字列と評価されるRDBMSがありますし、MySQLではシングルクォーテーションで囲んでも数値として評価されるケースがあります。


参考サイト

id:kasai-de_eb

丁寧に解説して頂きありがとうございます。

参考になりました。

2008/05/01 18:50:13
id:itss No.3

回答回数171ベストアンサー獲得回数1

ポイント20pt

Hi,

心配する必要はありません。

そんなことは忘れて、勉強してください。

http://q.hatena.ne.jp/answer

>シングルクォートでエスケープできるものでダブルクォートでエスケープ

>できないものがない気がします

ちゃんとできるようになってます。

世界は破滅しません。

id:kasai-de_eb

そうですよね。

まずは一通り勉強してみます!!

ありがとうございます。

2008/05/01 18:51:14
id:hirotow No.4

回答回数131ベストアンサー獲得回数10

ポイント20pt

端的にいうと必要になってきます。

プログラミング言語によって解釈は異なりますが、

C言語派生の言語(C/C++/C#/Java等)では、シングルクオーテーション('a')が「文字」、ダブルクオーテーション("abc")が「文字列(文字配列)」を表します。

スクリプト言語ではシングルクオーテーション('abc')が「単純な文字列」、ダブルクオーテーション("abc$def")が「変数が展開される文字列(C言語で言うところのsprintfのようなもの)」を表します。

またヒアドキュメント(ヒア文字列)といって、改行やエスケープ文字をそのまま認識するタイプの文字列表現もあります。

一方コマンドプロンプトなどのシェル言語では、全体を囲むのがダブルクオーテーション、特定のフラグの引数を分離するのがシングルクオーテーションであるケースが多く、

"C:\hoge\piyo.exe" -a'optionstr' -b 'option str' 'C:\path\to\first file' 'C:\path\to\second file'

のようになります。

一応たいていの場合はシングルクオーテーションを省略したりダブルクオーテーションにしても動きますがごくまれにそうでないものをいます。

http://www.contoso.com/

URLはダミーです。

お使いになるプログラミング言語の入門サイトを自分でお探しになることをお勧めします。

「言語名 入門」と検索すればすぐに見つかるはずです。

id:kasai-de_eb

丁寧に解説して頂きありがとうございます。

参考になりました。

2008/05/01 18:51:22
id:mintan No.5

回答回数29ベストアンサー獲得回数2

ポイント20pt

「何に」おけるシングルクォートとダブルクォートの違いなのか明記されていないのですが、

直前の質問がphpに関するに関する質問でしたので、「phpにおいて」という前提で回答します。

 

PHP: 文字列 - Manual

にあるとおり

ダブルクォートで囲った文字列は特殊文字のエスケープシーケンスを展開してくれますが、

シングルクォートではそれらは展開されず、エスケープを使う意味があるのは

文字列内にシングルクォートを含めたい場合くらいだと思います。

 

プログラムを作る上では必要になってくるんでしょうか?

ダブルクォートはシングルクォートの機能を兼ねるので

シングルクォートは使わなくてもコーディング自体はできます。

 

ただ、意識せずに特殊文字のエスケープシーケンスを

うっかり書いてしまうケースがあります

echo '例)C:\new_folder' → 例)C:\new_folder

echo "例)C:\new_folder" → 例)C:(改行される)ew_folder

 

経験則から言えばこういううっかりミスは意外と見落としやすいので

自分の場合、通常文字列を扱うときは原則シングルクォートを使用して、

特殊文字のエスケープシーケンスを使いたい時のみダブルクォートを使う

という風に使い分けてくだらないミスを避けるようにしています。

id:kasai-de_eb

丁寧に解説して頂きありがとうございます。

参考になりました。

2008/05/01 18:51:30

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません