[英]Single, double quotes and sizeof('a') in C/C++
我在C或C ++中查看單引號與雙引號的問題。 我無法完全理解給出的解釋,所以我寫了一個程序:
#include <stdio.h>
int main()
{
char ch = 'a';
printf("sizeof(ch) :%d\n", sizeof(ch));
printf("sizeof(\'a\') :%d\n", sizeof('a'));
printf("sizeof(\"a\") :%d\n", sizeof("a"));
printf("sizeof(char) :%d\n", sizeof(char));
printf("sizeof(int) :%d\n", sizeof(int));
return 0;
}
我使用gcc和g ++編譯它們,這些是我的輸出:
sizeof(ch) : 1
sizeof('a') : 4
sizeof("a") : 2
sizeof(char) : 1
sizeof(int) : 4
sizeof(ch) : 1
sizeof('a') : 1
sizeof("a") : 2
sizeof(char) : 1
sizeof(int) : 4
g ++輸出對我有意義,我對此沒有任何疑問。 在gcc中,有必要讓sizeof('a')
與sizeof(char)
嗎? 背后有一些實際的原因還是只是歷史?
同樣在C中,如果char
和'a'
具有不同的大小,這是否意味着當我們寫char ch = 'a';
,我們正在進行隱式類型轉換?
在C中,諸如'a'
字符常量具有int
類型,在C ++中它是char
。
關於最后一個問題,是的,
char ch = 'a';
導致int
隱式轉換為char
。
因為沒有char只是intgers鏈接到一個字符
就像一個62我猜
如果你嘗試printf(“%c”,62); 你會看到一個角色
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.