我一直在給出下面的任務來解釋3個語句中發生了什麼,但我無法弄清楚。在語句中添加1到字符串文字的區別
cout << ("hello" + 1); // ello
cout << (*"hello") + 1; // 105
cout << (*("hello" + 1)); // e
- 爲什麼是2號數字,而不是一個角色?
- 確實第一個還有零個字符? (於端線)
我一直在給出下面的任務來解釋3個語句中發生了什麼,但我無法弄清楚。在語句中添加1到字符串文字的區別
cout << ("hello" + 1); // ello
cout << (*"hello") + 1; // 105
cout << (*("hello" + 1)); // e
*"hello"
給出串,'h'
的第一個字符,char
類型,具有ASCII值104的整數提升規則意味着,加入char
和int
的情況下,char
轉換爲int
,給出類型爲int
的結果。輸出int
給出數值。
是的。字符串文字是一個以零字符結尾的數組。給它的地址加1會給出數組第二個字符的指針;數組的其餘部分保持不變,所以仍然包含最後的零。
cout << ("hello" + 1); // ello
你遞增const char[]
1,讓您打印的一切,但第一個字符(直到你遇到空字符
cout << (*"hello") + 1; // 105
取消引用const char[]
這裏。第一個字符是h,ASCII碼爲104
。加一個即可得到105
。
cout << (*("hello" + 1)); // e
與之前相同,您取消引用const char[]
,但這次您首先增加1。
值得注意的是字符串文字是'const char [N]'s。 – chris 2014-08-28 01:42:24
您無法取消引用數組。您取消引用陣列衰減的指針。 – 2014-08-28 01:45:46