gccがchar *(例えば "STRING")とchar(例えば 'C')をポインタとして追加する理由は何ですか?gccがchar *とcharを生ポインタ( "str" + "c")として追加する
const char *ccc = "Test1";
const char t = 'T';
const char *res = ccc + t;
printf("%s, %p, %d, %p\n", res, ccc, t, res);
出力
, 0x8048d97, 84, 0x8048deb
私はあなたが文書化、標準仕様、または製品を指すことができ、意味ですか?この動作を制御または無効にすることはできますか?
UPD:なぜ私が尋ねると、どのような予想外では、コンパイラは適切な演算子+を見つけることができないとき
(char*)CString() + (char)char_var
として
CString() + 'c'
作品ということです。自動連結を無効にして、そのような場所を(レガシーコードで)見つけることは多分考えました。しかし、ほとんどの場合、私はその動作の正確な文書を探したいと思っていました。
なぜこの動作を制御または無効にしますか?あなたはこれが何をすると思いますか? –
'strcat'がここで使われているかもしれません。 –
これはCとC++がポインタを扱う方法です。演算子のオーバーロードが必要な場合は、 'std :: string'を使用してください。実際には、 'std :: string'を使ってください! –