C语言自动转换问题
voidmain(){charch='A';printf("%d",sizeof('A'));printf("\n%d",sizeof(ch));getchar();}为...
void main(){
char ch='A';
printf("%d",sizeof('A'));
printf("\n%d",sizeof(ch));
getchar();
}
为什么第一个是4 想不通啊 展开
char ch='A';
printf("%d",sizeof('A'));
printf("\n%d",sizeof(ch));
getchar();
}
为什么第一个是4 想不通啊 展开
3个回答
展开全部
'A' 是一个字符常量,但不同的编译器对其解释是不同的,以下内容摘自网络,可自行测试验证一下:
In C :
#include <stdio.h>
int main(){
char a = 'a';
printf("Size of char : %d\n",sizeof(a));
printf("Size of char : %d\n",sizeof('a'));
return 0;
}
Output :
Size of char : 1
Size of char : 4
In C++ :
#include <iostream>
int main(){
char a = 'a';
std::cout<<"Size of char : "<<sizeof(a)<<"\n";
std::cout<<"Size of char : "<<sizeof('a')<<"\n";
return 0;
}
Output :
Size of char : 1
Size of char : 1
为什么sizeof('a')返回的值在C与C++中是不同的?
C99标准的规定,'a'叫做整型字符常量(integer character constant),被看成是int型,所以在32位机器上占4字节。
ISO C++标准规定,'a'叫做字符字面量(character literal),被看成是char型,所以占1字节。
C99:
An integer character constant is a sequence of one or more multibyte characters enclosed
in single-quotes, as in 'x'. An integer character constant has type int.
C++2003:
A character literal is one or more characters enclosed in single quotes, as in ’x’, optionally preceded by the letter L, as in L’x’.A character literal that does not begin with L is an ordinary character literal, also referred to as a narrow-character literal. An ordinary character literal that contains a single c-char has type char, with value equal to the numerical value of the encoding of the c-char in the execution character set. An ordinary character literal that contains more than one c-char is a multicharacter literal. A multicharacter literal has type int and implementation-defined value.
追问
那char ch='A';在存储的时候存储的是ASCII码吗 如果是 那不也是4个字节
展开全部
'A'的型别是int.因此sizeof'A'为4。
强制类型转换即可为1:sizeof((char)'A')为1
强制类型转换即可为1:sizeof((char)'A')为1
更多追问追答
追问
那char ch='A';在存储的时候存储的是ASCII码吗 如果是 那不也是4个字节
追答
存储的时候已经转换成char类型了,char ch='A' 相当于char ch=65,你可以试试。ASCII码是char类型的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
英文字母都是占四位,中文字符占8位。
追问
那char ch='A';在存储的时候存储的是ASCII码吗 如果是 那不也是4个字节
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询