還有字符''
這些中間都沒有東西的到底是占幾個位元組的。
uj5u.com熱心網友回復:
如果不是寬位元組字符,占1個字符(字串結束符)8個位元組字符''也一樣,雖然里面什么都沒有,但是用1個字符8個位元組來存盤
當然,如果是C,并且是字符常量的話,占4個字符32個位元組(C的字符常量用int來存盤,這也就為何getchar的回傳值是int)
uj5u.com熱心網友回復:
#include <stdio.h>
#include <string.h>
int main() {
int v;
char s[3]={'A','B','\0'};
printf("0x%02X 0x%02X 0x%02X\n",
(unsigned char)s[0],
(unsigned char)s[1],
(unsigned char)s[2]);//0x41 0x42 0x00
strcpy(s,"");
printf("0x%02X 0x%02X 0x%02X\n",
(unsigned char)s[0],
(unsigned char)s[1],
(unsigned char)s[2]);//0x00 0x42 0x00
v=strlen("")+1;
printf("%d\n",v);//1
// v=sizeof('');//VS2015編譯報錯error C2137: 空字符常量
v=sizeof(' ');
printf("%d\n",v);//1
return 0;
}
uj5u.com熱心網友回復:
和字串不同 單引號里面不能空 必須有至少1個字符uj5u.com熱心網友回復:
""必然是 char[1] 不會是寬字符寬字符字串字面量是另一個寫法L""
uj5u.com熱心網友回復:
怎么可能1個字符8個位元組呢?uj5u.com熱心網友回復:
說錯了,1個字符占8位
uj5u.com熱心網友回復:
注意:這允許一種極端情況,其中位元組有 64 位大小,所有型別(包括 char )都有 64 位寬,而 sizeof 對每個型別均回傳 1。uj5u.com熱心網友回復:
個人理解sizeof意思本就是回傳位元組數 跟位元組是否8位元本是兩碼事 這么看其實1位元組非8位元(甚至非2的冪)不算特殊情況轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/245440.html
標籤:新手樂園
上一篇:求求大佬幫我看看為什么運行不了
