字符 char

ascII码表

  1. #include<stdio.h>
  2. int main()
  3. {
  4. unsigned char ch;
  5. for(ch = 0;ch < 128;ch++)
  6. {
  7. printf("%3d-->>>%c ",ch,ch);
  8. if(ch % 32 == 0)
  9. {
  10. putchar(10);
  11. }
  12. }
  13. printf("\n\n==================\n\n");
  14. for(char ch1 = 'a';ch1 <= 'z';ch1++) {
  15. printf("%3d-->>>%c \n",ch1,ch1);
  16. }
  17. return 0;
  18. }

48---0,57--9;

65---A,97--a;

  1. for(char ch = 'a';ch <= 'z';ch++) {
  2. printf("ch=%3d 小写字母:%c\n",ch,ch);
  3. printf("ch=%3d 大写字母:%c\n",ch-32,ch-32);
  4. printf("ch=%3d 大写字母:%c\n",ch-' ',ch-' ');//空格的asc码值32
  5. }
  1. for(int i = 0;i <= 10;i++) {
  2. printf("%d\n",i);
  3. }//1-10 数值
  4. for(char j = 48;j <= 48+9;j++) {
  5. printf("%d %c \n",j,j);
  6. }//第1组输出的是asc码
  7. //%c输出字符所对应的asc码值
  8. printf("---------------------------\n");
  9. for(char k = '0';k <= '0'+9;k++) {
  10. printf("%d %c \n",k,k);//第一组字符对应的asc码。第二组字符。
  11. }

转义字符

本身已有一个字符的意义,给他另外一个别的意义。

字符语义被征用,回归本义

有新的需求能通过转义实现新的功能。

  1. printf("%d %d %d %d\n",'\n','\r','\t','\b');//对应的asc: 10 13 9 8

常量

常量是程序中不可变的量,常以字面量(赋值的数),或者宏的方式出现(#define Pi 3.1415926)。

用途:赋值,运算。

常量的类型:

  1. printf("sizeof(0) == %d sizeof(0.0) == %d \n",sizeof(0),sizeof(0.0));//sizeof(0) == 4 sizeof(0.0) == 8

不同类型的-1在内存中存放的补码。

  1. char ch = -1;//1111 1111
  2. short sh = -1; //1111 1111 1111 1111
  3. int in = -1;//1111 1111 1111 1111 1111 1111 1111 1111

1111 1111

十进制:255(8,4,2,1计算)

十六进制:0xff(4位刚好是十六进制的一位)

八进制:0377(3位刚好是八进制的一位)

整型常量:10,8,16进制数

实型:小数(.)

指数:123.45678=1.2345678e2科学计数法

1.字母e或者E前后必须有数字。

2.字母e或者E后面的指数必须为整数,字母e或者E的前后及数字之间不得有空格。

字符常量:char a = 'a';

字符串常量:char aa = "aaa";

格式的输入与输出

  1. printf("格式字符串",[输出列表]);//print:打印format:格式
  2. %d:十进制输出
  3. %x:十六进制输出
  4. %o:八进制数据输出
  5. %f:实行数据输出
  6. %c:字符型输出
  1. int aa = 0x66;
  2. printf("%#d",aa);
  3. printf("%#x",aa);
  4. printf("%o",aa);//aa并没有变只是以进制的形式输出

printf 中至少有两类:控制格式,飞哥是字符。

格式字符要求跟输出一一对应,非格式字符原样输出,其作用是原样输出,提示,显示作用。

格式字符串:

  1. "%[标志][输出最小宽度][.精度][长度]类型"//[]可以省略

当实际宽度大于所给的宽度,按照实际输出。

标志:-(左对齐),+(默认,右对齐)0(不够补0)#(用于表示进制)

  1. scanf:键盘输入
  2. scanf("%d%d",&d,&d);//天然的间隔:tab enter(结束) 空格,格式串和被输入的变量一一对应。非格式串,需要原样输入。

注意:%c在scanf,中会有点问题,在空格的处理上有点问题。

  1. char a = 'a';
  2. char b = 'b';
  3. scanf("%c%c",&a,&b);//输入格式字符串中本身有三种间隔,超过两个%c在输入过程中获取到了本身的空格。
  4. scanf("%c %c",&a,&b);//解决了,还是有麻烦,空格在中间还可以。(但是输入的时候很多空格也可以)

getchar,putchar;

  1. char ch;
  2. ch = getchar();//从键盘输入一个字符
  3. putchar(ch);//输出一个字符
  4. putchar(10);//回车,回车的ascii是10

类型转换

隐式转换

不需要认为参与而产生的默认转换。

1.整型提升

2.混合提升

整型提升:

char,short,int等类型一起运算时,首先提升到int。

  1. char ch;short sh;int in;
  2. printf("sizeof(ch)=%d\n",sizeof(ch));//1
  3. printf("sizeof(ch+ch)=%d\n",sizeof(ch+ch));//4
  4. printf("sizeof(sh)=%d\n",sizeof(sh));//2
  5. printf("sizeof(sh)=%d\n",sizeof(sh));//4
  6. printf("sizeof(in)=%d\n",sizeof(in));//4
  7. printf("sizeof(in)=%d\n",sizeof(in));//4

大数据赋值给小数据会溢出,小范围向大范围转由于符号的扩充保证了数据的正确性。

混合提升:

进行运算时以表达式中最长类为主,将其他类型数据均转换成该类型。

  1. float 4 double 8
  2. int 4 long long 8

int和float字节数相同到底是向谁转化?

  1. float fl = 3.14;
  2. int in = 4;
  3. long long lo = 4;
  4. printf("fl+in=%d\n",%d);//错误值
  5. printf("fl+in=%f\n",%d);//7.14正确
  6. printf("fl+lo=%d\n",%d);//错误
  7. printf("fl+lo=%f\n",%d);//7.14正确

说明int=>>>float

long long=>>>float=>>>double

隐式转换规则:从小向大的方向(不讨论溢出,截断,无符号)

char=>>>short=>>>int=>>>long long=>>>float=>>>double

赋值转换

  1. int in = 10;
  2. float fl = 3.14;
  3. in = fl;//小数赋值给整数变整数
  4. printf("%d\n",in);//3
  5. fl = in;//整数赋值给小数变小数
  6. printf("%d\n",fl);//10.0

强制类型转换

  1. int a = 10;
  2. int b = 3;
  3. printf("%d\n",a/b);//3由于两个数都是int没有变量提升,要想得到3.3333可以强制类型转换
  4. printf("%f\n",(float)a/b);//3.333333
  5. printf("%f\n",a/(float)b);//3.333333

浮点数跟0的比较

  1. float data = 0.0;
  2. if(data == 0) {
  3. printf("true");
  4. }else{
  5. printf("false");
  6. }
  7. if(data == 0.0) {
  8. printf("true");
  9. }else{
  10. printf("false");
  11. }
  12. //结果都是正确的,但是有问题
  13. double tem = 0.3;
  14. printf("%d\n",(int)(tem*10));//0.3,0.7会出错,其他的可以。
  15. printf("%d\n",(int)((tem+0.000001)*10));//0.3,0.7正确无误,加上修正值
  16. //0.3 实际村的是 0.299999 或者0.311111
  1. double tem = 0.0;
  2. if(tem>0-0.000001 && tem < 0+0.000001) {
  3. printf("true");
  4. }else{
  5. printf("false");
  6. }

C/C++(基础-常量,类型转换)的更多相关文章

  1. Java编程基础——常量变量和数据类型

    Java编程基础——常量变量和数据类型 摘要:本文介绍了Java编程语言的常量变量和数据类型. 常量变量 常量的定义 一块内存中的数据存储空间,里面的数据不可以更改. 变量的定义 一块内存中的数据存储 ...

  2. [.net 面向对象编程基础] (4) 基础中的基础——数据类型转换

    [.net面向对象编程基础] (4)基础中的基础——数据类型转换 1.为什么要进行数据转换? 首先,为什么要进行数据转换,拿值类型例子说明一下, 比如:我们要把23角零钱,换成2.30元,就需要把整形 ...

  3. CLR via C#深解笔记三 - 基元类型、引用类型和值类型 | 类型和成员基础 | 常量和字段

    编程语言的基元类型   某些数据类型如此常用,以至于许多编译器允许代码以简化的语法来操纵它们. System.Int32 a = new System.Int32();  // a = 0 a = 1 ...

  4. JavaScript学习 - 基础(二) - 基础类型/类型转换

    基础类型 - 数字类型(Number) 1.最基本的数据类型 2.不区分整型数值和浮点型数值 3.所有数字采用64位浮点格式存储,相当于Java和C语言中double格式 4.能表示的最大值 +- 1 ...

  5. C#基础 数据类型 类型转换

    本节主要讲解数据类型和各类型之间的转换,两点都是重点,难点在于各种转换的活学活用. 一   数据类型 (一)基本数据类型 1  值类型 (1)整形         int                ...

  6. C语言基础 (6) 类型转换,数组与随机数

    复习 1.隐式转换 Double a Int b = 1 A = b //编译器自动转换把b转换为double类型后 再给a赋值(隐式转换) 2.强制类型转换 (变量)类型名 Int a = 1 // ...

  7. java基础之 类型转换

    一.自动类型转换 1.java中不同类型的数据在计算时,为保证数据的精度,数据的类型会以大容量的类型为主: 2.自动类型转换的排序: char.byte.short -> int -> l ...

  8. Java基础之类型转换总结篇

    Java中,经常可以遇到类型转换的场景,从变量的定义到复制.数值变量的计算到方法的参数传递.基类与派生类间的造型等,随处可见类型转换的身影.Java中的类型转换在Java编码中具有重要的作用.    ...

  9. Java基础-常量池

    在class文件中,“常量池”是最复杂也最值得关注的内容. Java是一种动态连接的语言,常量池的作用非常重要,常量池中除了包含代码中所定义的各种基本类型(如int.long等等)和对象型(如Stri ...

随机推荐

  1. ASP.NET 部分视图

    ASP.NET MVC 里的部分视图,相当于 Web Form 里的 User Control.我们的页面往往会有许多重用的地方,可以进行封装重用. 使用部分视图有以下优点:   1. 可以简写代码. ...

  2. Slimming Paint (a.k.a. Redesigning Painting and Compositing)

    Slimming Paint is a Paint team project to re-implement the Blink<->cc picture recording API to ...

  3. 洛谷 P3804 【模板】后缀自动机 统计单词出现次数

    后缀自动机模板题. 关键时求解每个节点的 $right$ 大小. 由于后缀自动机在构建时会保证点和点的 $right$ 只可能没有交集,或者一个是另一个的真子集,我们可以不重复的对 $right$ 进 ...

  4. 学习Go语言之简易ORM框架

    ORM即为对象关系映射,ORM常用于程序适配多种数据库,以达到开放扩展关闭修改的原则.笔者初学Golang,遂有意写个简易ORM框架,权当知识巩固. 首先需要有一个思想就是数据库表结构都是固定,但是每 ...

  5. Lenovo k860i 移植Android 4.4 cm11进度记录【上篇已完结】

    2014.5.16 为了验证一下下载的CM11的源码有没有问题,决定编译一下cm官方支持的机器,手上正好有台nexus7 2012,就拿它为例测试一下在mac os x平台的整个编译过程. 1. 最开 ...

  6. docker操作大全

    docker 常用操作方法 查看docker版本docker version 搜索镜像docker serach 镜像名称 拉去镜像docker pull 镜像名称 查看本地镜像仓库信息docker ...

  7. CF245H Queries for Number of Palindromes(回文树)

    题意翻译 题目描述 给你一个字符串s由小写字母组成,有q组询问,每组询问给你两个数,l和r,问在字符串区间l到r的字串中,包含多少回文串. 输入格式 第1行,给出s,s的长度小于5000 第2行给出q ...

  8. Unity 获得视频的某一帧,生成缩略图

    Unity 并无直接获取视频某一帧图像的API,所以想要生成缩略图就要自己写方法了, 图片和视频都可以用这种方式生成缩略图,另,转载请标明出处,谢谢. using System.Collections ...

  9. 四 HBase 客户端设置缓存优化查询。

    其实查询无非是一个 HBase 的 RPC 计算公式 .然后给API 提供值. RPCs = (Rows * Cols per Row) / Min(Cols per Row, Batch Size) ...

  10. struts2文件上传需要注意的

    ① 必须封装三个字段:文件.文件类型.文件名,而且这三个字段的名字的前面几个字母是一样的 如: private File upload; private String uploadContentTyp ...