printf("¥“Hello c¥“¥n");

printf("¥“Hello c¥“¥n"); で表示される文字列って ¥“Hello c¥“ じゃないですか? 回答には “Hello c“ とありました。解説お願いします!

C言語関連194閲覧

ベストアンサー

0

printf("¥“Hello c¥“¥n"); そっくりそのままが正しいとすると、\があるので、エスケープシーケンス かと思いきや次の文字とあわせた、\“はエスケープシーケンスには ないので、\を無視して、次の文字“をそのまま表示しているという 状況です。 \"のエスケープシーケンスが指定されたので、"を表示している。 という状況とはまったく違います。 極端な話、printf("¥あHello c¥あ¥n"); と指定して、\あ はエスケープシーケンスではないので\を無視して次の文字をそのまま 表示して、 あHello cあ (と改行)が表示されるのと同じ状況です。 もちろん、 printf("¥"Hello c¥"¥n"); であれば、\"でエスケープシーケンスにより、"が表示されるという 状況になります。 なお、C言語では、"と“はまったく別の文字で、"のかわりに“を使うと いう事はできませんから、 printf'("Hello c\n"); のつもりで、 printf(“Hello c\n“); とやると、エラーになります。

ThanksImg質問者からのお礼コメント

ありがとうございます!

お礼日時:2014/12/1 13:19

その他の回答(4件)

0

softrtさん printf("¥“Hello c¥“¥n");//エラー これで、正常に動く。 printf("¥"Hello c¥"¥n"); 結果 "Hello c" 注意 半角と全角は違う。

0

エスケープシーケンスと呼ばれるものです。 特殊文字です。 普通に "Hello c" とすると、 前と後ろのダブルクォーテーションがはずされて表示されます。 "" は通常文字列であることを示します 1 だと 数字の1 "1" だと数字ですが、文字列の1 ( ある意味、一、二、三と漢字で表すようなもの. ) になります。 なので、 普通に "" だと文字列であるということを示すものとして扱われるので、どうしても "" をつけるて表示したりする場合、 \" という具合に指定します。 \n も同じ( 使い方は違いますが。 ) " を文字の一部( 全部でもいいですが。 )として使う場合は 前に \ (アメリカとかの海外ではバックスラッシュ(スラッシュば逆になったやつ) を使いますが。)をつけます。 それを両側に入れただけです。 あと、パスもこれに近いです。 普通に "C:\test1\test2\test3\abc.txt" とやると、 \t と \a がエスケープシーケンスとして扱われます。 なので、 \ を文字列の一部として使う場合は、\の前に\をつけて \\ とします。 なので、 "C:\\test1\\test2\\test3\\abc.txt" となります。

0

printf("¥“Hello c¥“¥n"); の最後についてる「¥n」について、どう思っているのか 是非ともあなたの意見を聞きたい 上記のものだと、 ¥“Hello c¥“¥n と表示されないのは当然……と思った理由を聞きたい

0

\ はエスケープシーケンスと言って、普通では表示できない文字を表示するのに使います。 「“」は命令の中で、特殊な文字(「文字列開始」「文字列終わり」の識別)として使われるので "Hello c" を素直に書くと printf(""Hello c"¥n"); ←なんのこっちゃよくわからん という事になります。 で、エスケープシーケンスを使うわけです。