关于char 型 的 存储实质(asc2码表的)
来源:互联网 发布:php调用 编辑:程序博客网 时间:2024/05/29 05:55
起因:有一天一个朋友发来一个程序给我看
#include <stdio.h>void main(){ int a,b=322; float x,y=8.88; char cl='k',c2; a=y; \\ a=8 printf("a=%d",a); x=b; \\x=322.000000 a=cl; \\ a等于 字母 k的 asc2 码 107 ,a=107<span style="color:#ff0000;"> c2=b; \\ c2 等于 322 这个asc2 码所对应的 字符</span> printf("a=%d,x=%f,a=%d,c2=%c\n",a,x,a,c2);}
答案的输出:a=107,x=322.000000,a=107,c2=B;
问题就出现在为什么c2输出是 c2=B 呢?
字符型 char
对于单个字符 char ch='B'; 或者 char ch=66; //因为字符在计算器中其实是用asc2 码表存储的,一个字符占一个字节(即8位);
对于字符串 char ch[80]="abcdefg";// ch[80],字符串的长度为80即可以存放79个字符,还有一个到哪去了呢,还有一个 当结束控制符了'\0';
//还有需要提醒的就是 单字符 用 单引号,多字符用双引号;
好啦前面讲的都是写鸡毛蒜皮的事,重点来了,回到上面那个问题 为什么c2输出是 c2=B 呢?
先来个asc2码表
acs2码表的共有128 个字符(0~127);是不是觉得很奇怪呢 c2=322;超过了127呢;
那该怎么办呢,但是c2的输出是 B;
322=2*128+66; //生气的东西又出现了,那个输出的c2=322;对应的字符 B 的asc2码的 值 就是 66;
那么聪明的你应该懂了吧?
其实我们一个字符付上 整形值,则这个整形值就有对应的asc2码值,那么计算机的内部指令是怎么走的呢 加上你输入的是c2=m;这里的m为一个整形数
内部指令为(m+128)mod128= ?;这个问号就是你得到的asc2码值;
如有疑问/错误欢迎广大网友指出:
- 关于char 型 的 存储实质(asc2码表的)
- ascII码,asc2码表
- char到wchar的转换实质
- 关于Responce.Redirect的实质
- 关于报表变量的实质
- java--->方法的反射(泛型实质)
- SpringMVC的实质揭秘图(八)
- 软件工程项目的实质
- 计算机威胁的实质
- import语句的实质
- wchar_t类型的实质
- 句柄的实质
- iphone protocol的实质
- 项目问题的实质
- 掌握技术的实质
- 任务栏隐藏的实质
- 任务栏隐藏的实质
- C指针的实质
- GestureDetector.OnGestureListener 详解
- linux 内核的链表操作方法
- Unity配合VS2012来使用的一些插件集合
- C/C++程序员必须熟练应用的开源项目
- Leetcode:reverse_integer
- 关于char 型 的 存储实质(asc2码表的)
- 如何成为一个牛逼的C/C++程序员?
- 深入理解java虚拟机系列(一):java内存区域与内存溢出异常
- java7K面试题之银行业务调度系统
- 【Android开发经验】android:windowSoftInputMode属性详解
- Javascript 中call的使用
- 2014年10月3日于塞北
- 设计模式总结开篇
- 组合游戏(博弈)