C语言的单引号是什么意思?
我输出字符串的时侯,不小心把双引打成单引号,结果编译不但没有出错,而且还输出了一串数字!
#include <iostream>
#include <stdlib.h>
using namespace std;
int main(int argc, char *argv[])
{
if (int i=(1==1))
cout<<'OK'<<endl; //OK字符用了单引号
system("PAUSE");
return 0;
}
输出:20299 Dev-c和VC6的结果都一样!
问题点数:20、回复次数:16Top
1 楼MagicCarmack(MagiC++)回复于 2005-04-03 20:46:41 得分 0
有没有人来帮着解一下啊
很怪Top
2 楼pcboyxhy(-273.15℃)回复于 2005-04-03 20:53:46 得分 10
'K'的ASCII值 + 'O'的ASCII值*256 =?Top
3 楼ycom__net(一恒)回复于 2005-04-03 20:55:13 得分 0
更其怪的是,把'OK'换成‘OJ’,值减1Top
4 楼Bosscat(不知天高地厚的波斯猫)回复于 2005-04-03 21:34:27 得分 10
cout << 'a' << endl;
结果是:a
cout << 'ab' << endl;
结果是:24930
编译器实际上把单引号中间的ab当作一个字符来处理了
'a'的ASCII值97乘以256,加上'b'的ASCII值98就等于24930
为什么要乘以256呢,因为一个字符在内存中占的大小是一字节,即8bit,2^8=256Top
5 楼flying_dancing(小混混-_-)回复于 2005-04-03 21:36:02 得分 0
K--79 K--75
等高手Top
6 楼Bosscat(不知天高地厚的波斯猫)回复于 2005-04-03 21:37:32 得分 0
同样的,O的ASCII值是79,K的ASCII值是75
79×256+75=20299Top
7 楼bigbigfans(小骁)回复于 2005-04-03 21:37:42 得分 0
同意: pcboyxhy(-273.15℃)
'O'ASCII值*256+'K'的ASCII值
'O'ASCII值为79,'K'的ASCII值为75
79*256+75=20299
cout<<'AB'<<endl;
输出:16706
'A'ASCII值为65,'B'的ASCII值为66
65*256+66=16706
测试了cout<<'ABC'<<endl;
输出为:4276803=65*256*256+66*256+67
测试了汉字
cout<<'汉'<<endl;
输出无:-17734
会不会和为了因为有要支持宽字符的原因?没有测试国DOS下的编译器,像BC3.1
Top
8 楼Bosscat(不知天高地厚的波斯猫)回复于 2005-04-03 21:54:02 得分 0
刚刚在tc3.0里试了一下,'ab'输出结果是
'b'的ASCII值乘以256,加上'a'的ASCII值
和VC刚好相反Top
9 楼inlin()回复于 2005-04-03 21:58:14 得分 0
用ok的ASCII相乘Top
10 楼xjp6688(大平/要做必须最好)回复于 2005-04-04 07:37:03 得分 0
应该是ASCIITop
11 楼xjp6688(大平/要做必须最好)回复于 2005-04-04 07:40:25 得分 0
再次学习Top
12 楼xkou(九天神龙)回复于 2005-04-04 10:15:14 得分 0
OK ==> 4F4B ==> 20299Top
13 楼freelancerww(风行)回复于 2005-04-04 15:10:15 得分 0
呵呵
有意思 !~~~
Top
14 楼steedhorse(晨星)回复于 2005-04-04 15:12:24 得分 0
原来如彼Top
15 楼atgjplh(永远的C/C++(unix/liunx))回复于 2005-04-04 15:21:38 得分 0
还挺复杂的Top
16 楼MagicCarmack(MagiC++)回复于 2005-04-04 15:23:05 得分 0
TO: Bosscat(不知天高地厚的波斯猫)
cout << 'a' << endl;
结果是:a
cout << 'ab' << endl;
结果是:24930
编译器实际上把单引号中间的ab当作一个字符来处理了
'a'的ASCII值97乘以256,加上'b'的ASCII值98就等于24930
为什么要乘以256呢,因为一个字符在内存中占的大小是一字节,即8bit,2^8=256
能不能说得更清楚一点!
Top




