整型字元常量和字元字面量的區別 sizeof(char) 和 sizeof('a')
編譯和執行如下c語言程式碼,系統將會輸出什麼?
1
2
3
4
5
6
7
|
#include<stdio.h> int main() { char c= '0' ; printf ( "%d
%d" , sizeof (c), sizeof ( '0' )); return 0; } |
C語言: char a = 'a'; sizeof(char) = 1 sizeof(a) = 1 sizeof('a') = 4
C++語言: char a = 'a'; sizeof(char) = 1 sizeof(a) = 1 sizeof('a') = 1
字元型變數是1位元組這個沒錯,奇怪就奇怪在C語言認為'a'是4位元組,而C++語言認為'a'是1位元組。
原因如下:
C99標準的規定,'a'叫做整型字元常量(integer character constant),被看成是int型,所以在32位機器上佔4位元組。
ISO C++標準規定,'a'叫做字元字面量(character literal),被看成是char型,所以佔1位元組
相關文章
- C/C++——sizeof和strlen的區別C++
- C語言sizeof()變數、字元、字串C語言變數字元字串
- sizeof與strlen的區別
- sizeof 與 strlen 的區別
- strlen與sizeof的區別
- C語言中,當計算字元陣列長度時,用sizeof 和strlen 的原理及兩者的區別C語言字元陣列
- c語言字元常量當做整型C語言字元
- 使用javap深入理解Java整型常量和整型變數的區別Java變數
- C語言中的strlen與sizeof的區別C語言
- MySQL字元資料型別char與varchar的區別MySql字元資料型別
- sizeof和strlen計算陣列型別和指標型別字串陣列型別指標字串
- 理解sizeof
- char str[]和char *str的區別
- mysql 空值(null)和空字元('')的區別MySqlNull字元
- varchar和char的區別
- JAVA使用SizeOfJava
- 關於sizeof,對空指標sizeof(*p)可以嗎?指標
- 求陣列長度的兩種方法,以及區別(strlen sizeof)陣列
- sizeof 和 strlen 計算陣列大小和長度詳解陣列
- c++ sizeof使用C++
- 字串指標與字元陣列的區別--字串常量的值不能改字串指標字元陣列
- char和varchar2的區別
- 指標常量和常量指標的區別指標
- 解析C語言中的sizeofC語言
- C++中類的sizeofC++
- 由sizeof()引出的對陣列名和指標的新認識陣列指標
- MySQL中CHAR和VARCHAR區別MySql
- char ,varchar2和varchar的區別
- 結構體的sizeof問題結構體
- 解析C語言中的sizeof (轉)C語言
- NTMySQL中varchar和char型別的區別heeMySql型別
- C語言程式的內在分配:堆和棧以及char a[]和char*的區別C語言
- 正規表示式 字元和字元類字元
- 字串和字元的操作字串字元
- windows 字元訊息——WM_CHARWindows字元
- SQL插入語句中有單引號 && SQL中char nchar varchar nvarchar的區別 && Java中字元(串)和數值型別的轉換SQLJava字元型別
- c語言中sizeof詳解C語言
- char,nchar,varchar,nvarchar的區別和特點