簡體   English   中英

C / C ++中的單引號,雙引號和sizeof('a')

[英]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 ++編譯它們,這些是我的輸出:

GCC:

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.

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