CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

C语言的单引号是什么意思?

楼主bigbigfans(小骁)2005-04-03 20:40:18 在 C/C++ / 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

相关问题

  • 单引号里STACK什么意思(8088汇编指令)
  • 帮我看看这些单引号的意思,糊涂中!!!!!!!
  • asp.net(c#)如何过滤表单中的单引号?
  • 单引号问题
  • 单引号问题
  • 如何加入单引号?
  • 单引号的问题
  • 单引号匹配问题
  • 如何屏蔽单引号?
  • sql单引号问题

关键词

  • 单引号
  • 输出
  • cout
  • include

得分解答快速导航

  • 帖主:bigbigfans
  • pcboyxhy
  • Bosscat

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo