字符 char

ascII码表

#include<stdio.h>
int main()
{
unsigned char ch;
for(ch = 0;ch < 128;ch++)
{
printf("%3d-->>>%c ",ch,ch);
if(ch % 32 == 0)
{
putchar(10);
}
}
printf("\n\n==================\n\n");
for(char ch1 = 'a';ch1 <= 'z';ch1++) {
printf("%3d-->>>%c \n",ch1,ch1);
}
return 0;
}

48---0,57--9;

65---A,97--a;

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

转义字符

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

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

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

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

常量

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

用途:赋值,运算。

常量的类型:

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

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

char ch = -1;//1111 1111
short sh = -1; //1111 1111 1111 1111
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";

格式的输入与输出

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

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

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

格式字符串:

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

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

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

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

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

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

getchar,putchar;

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

类型转换

隐式转换

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

1.整型提升

2.混合提升

整型提升:

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

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

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

混合提升:

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

float 4  double 8
int 4 long long 8

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

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

说明int=>>>float

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

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

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

赋值转换

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

强制类型转换

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

浮点数跟0的比较

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

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. codeforces 540 B School Marks【贪心】

    题意:一共n个数,给出其中k个数,要求这n个数的中位数为y,这n个数的和不超过x,补全剩下的n-k个数 先统计给出的k个数里面比中位数小的数, 如果cnt<=n/2,说明中位数还没有出现,把这n ...

  2. 用xstart远程连接linux图形用户界面时发生已经在使用的情况

    1.举例打开pycharm 2.此时要输入ps aux|grep pycharm,出现下面的情况 3.然后找到矩形圈住的内容,然后输入 这样就杀掉了远程机子上pycharm,接着继续输入pycharm ...

  3. 开源映射平台Mapzen加入了Linux基金会的项目

    2019年1月29日,Linux基金会宣布,开源映射平台Mapzen现在是Linux基金会项目的一部分. Mapzen专注于地图显示的核心组件,如搜索和导航.它为开发人员提供了易于访问的开放软件和数据 ...

  4. MAC下搭建appium UI自动化环境

    参考资料: http://qa.blog.163.com/blog/static/190147002201510161119832/ http://blog.csdn.net/liuchunming0 ...

  5. 使用 gradle 在编译时动态设置 Android resValue / BuildConfig / Manifes中&lt;meta-data&gt;变量的值

    转载请标明出处:http://blog.csdn.net/xx326664162/article/details/49247815 文章出自:薛瑄的博客 你也能够查看我的其它同类文章.也会让你有一定的 ...

  6. DevExpress控件的安装及画图控件的使用

    近期须要绘制纵断面图,而AE自带的又不是非常好,查找资料后使用DevExpress控件中的画图控件实现了纵断面的绘制.Dev控件是须要付费的.这里我们使用破解版的哈. 安装包及破解文件上传至我的网盘了 ...

  7. Introduction to IIS Architectures

    https://docs.microsoft.com/en-us/iis/get-started/introduction-to-iis/introduction-to-iis-architectur ...

  8. scikit-learn 为机器学习

    如何使用 scikit-learn 为机器学习准备文本数据   欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 文本数据需要特殊处理,然后才能开始将其用于预测建模. 我们需要解析文本,以删除被 ...

  9. java实现折半查找

    package althorgrim;/** * 1.必须采用顺序存储结果 * 2.关键字必须有序 * @author hanrk-2734 * */public class TestBinarySe ...

  10. @Accessors

    @Accessors 作用:存取器,用于配置getter和setter方法的生成结果 三个属性:fluent.chain.prefix 1.fluent:流畅的,设置为true,getter和sett ...