请教C语言中'a'和'a ' 的区别

在VC中'a'和'a ' 的输出不一样。
1. cout<< 'a'<< endl; 输出为字符a
2.cout<< 'a '<< endl; 输出为数字24864.注意'a '中字符a后有一个空格。
请各位高手解答一下。

两个单引号“'”之间表示一个字符(注意不一定是单字节字符)。
单引号表示字符字面量在C中实质上是一个整数,即类型是int(无论是否是单字节字符);C++中单字节字符类型为const char,多字节字符类型为const int。(LZ可以用sizeof自行试验)。
在LZ的编译环境中'a '作为一个多字节字符处理,且字节序为大端序(高字节表示高位,低字节表示低位)。由于'a'值为97,' '值为32,所以'a '的值等于97*256+32=24864。cout不支持多字节字符输出,所以将字符以整数的形式输出。
另外,这里对多字节字符使用多字节字符集(MBCS)处理。如果是带L前缀的Unicode字符常量,那么类型是const wchar_t,可以用wcout等输出。
----
[原创回答团]

参考资料:原创

温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-12-01

1、本质区别

双引号里面的是字符串, 而单引号里面的代表字符。

2、输出区别

str = “a”输出的就是a这个字母;

str = ‘a’输出的测试65

3、底层区别

用单引号引起的一个字符实际上代表一个整数,整数值对应于该字符在编译器采用的字符集中的序列值。

扩展资料:

C 语言中,逗号(,)也可以是运算符,称为逗号运算符(Comma Operator)。逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式,称为逗号表达式。其一般形式为:

子表达式1, 子表达式2, ..., 子表达式n

例如:a + b, c = b, c++

逗号运算符的优先级是所有运算符中级别最低的,通常配合 for 循环使用。逗号表达式最右边的子表达式的值即为逗号表达式的值。上例中,c++ 的值(c 自增之前的值)即为该表达式的值。

逗号运算符保证左边的子表达式运算结束后才进行右边的子表达式的运算。也就是说,逗号运算符是一个序列点,其左边所有副作用都结束后,才对其右边的子表达式进行运算。因此,上例中,c 得到 b 的值后,才进行自增运算。

参考资料来源:百度百科-C语言

相似回答