[英]Can someone please explain this output?
cout<<"ccccc"+2;
Output:
ccc
我嘗試在網上搜索它,我知道這是一個非常愚蠢的問題,但在任何地方都找不到任何東西。 請如果有人可以幫助我。
"ccccc"+2;
"ccccc"
衰減到引用字符串文字"ccccc"
的第一個字符的const char *
指針。 當您向其添加2
時,結果將引用字符串文字的第三個元素。
它與以下內容相同:
const char *cptr = "ccccc";
cptr += 2;
cout << cptr;
當你寫道:
cout<<"ccccc"+2;
以下是發生的事情(這里要注意):
"ccccc"
是一個字符串文字。 特別是,它是const char[6]
類型。
現在,這個字符串文字衰減為指向const char
的指針,由於類型 decay ,它只不過是const char*
。
請注意,我們現在擁有的衰減的const char*
指向字符串文字的第一個字符。
接下來,prvalue 表達式2
被添加到該衰減指針的值。 這意味着現在,在添加2
之后, const char*
現在指向字符串文字的第三個字符。
使用const char*
調用合適的重載operator<<
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.