2016-10-28 3 views
1

申し訳ありませんが、私は非常に基本的な質問をするつもりです。私はそれを検索しようとしましたが、何の答えも見つけられませんでした。2つの文字列の間にスペースを追加すると、文字列がcで連結されるのはなぜですか?

私は次のコードを実行すると:

#include <stdio.h> 

int main() { 
    char *temp = "sai" "krishna"; 
    printf("%s\n", temp); 
    return 0; 
} 

を、それがなぜ起こるかsaikrishna

はあなたが親切に指定することができます印刷しますか? strcatや他の連結技術を使うべきではありませんか?

あなたはそれに関するすべてのドキュメントとこのテクニックを使用できる場所を参照できますか?

答えて

0

これは言語機能です。 Cでは、コンパイル時に文字列リテラルを連結することができます。非常に長い文字列リテラルが複数の行にまたがっている場合や、16進数のエスケープシーケンスを含む文字列リテラルを分割したい場合に便利です。 (たとえばputs("\x42AD")についてBADが印刷されますどのputs("\x42" "AD")とは反対に、おそらくナンセンスと意図しないある文字0x42ADに変換します。

strcatstrcpy、実行時に文字列処理のためのものです。あなたは、2つの文字列リテラルを使用している場合は、それらのコンパイル時の定数であり、実行時間を節約するために、あらかじめコンパイラによって連結されることもあります。

関連する問題