簡體   English   中英

有人可以解釋一下這個 output 嗎?

[英]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;

以下是發生的事情(這里要注意):

  1. "ccccc"是一個字符串文字 特別是,它是const char[6]類型。

  2. 現在,這個字符串文字衰減指向const char的指針,由於類型 decay ,它只不過是const char*

  3. 請注意,我們現在擁有的衰減const char*指向字符串文字的第一個字符

  4. 接下來,prvalue 表達式2被添加到該衰減指針的值。 這意味着現在,在添加2之后, const char*現在指向字符串文字的第三個字符

  5. 使用const char*調用合適的重載operator<<

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM