【C++系列】c语言基础。day03 数据类型,输入输出
in C/C++ with 0 comment

【C++系列】c语言基础。day03 数据类型,输入输出

in C/C++ with 0 comment

#数据类型

字符类型名称是char
字符类型里包含256个不同的整数,每个整数可以代表一个字符数据(“ $ ”,“a”等)
整数和字符之间是一一对应的关系,整数可以代表字符,也可以代表整数。
ascii码表里列出所有整数和字符之间的对应关系。 例如: “a” 97 “A“。 65
ascii码表里的所有小写字母是连续排列的,并且’a’对应的整数最小,’z’对应的整数最大。
所有大些英文字母和阿拉伯数字字符也是符合这个规律。 ‘d’ -‘a’. == ‘D’ - ‘A’. ==‘3’ - ‘0’ == 3 -0
所有字符数据被分成两组,每组包含128个。

其中一组字符数据对应的整数在所有计算机上都一样,它们对应的整数范围从 0 到 127
另外一组字符对应的整数在不同计算机上可能不同,这些整数的范围有可能从-128到-1 也可能从128 到 255

‘n’ 换行
‘r’ 回车
‘\’ 代表字符\
‘’ 代表字符 ‘
‘"' 代表字符 “

短整数类型名称是 short
这个类型里包含65536个不同的整数,其中一半是非负数,一半是负数。这些数字以0为中心向外扩展。

长整数类型名称是long
它里面包含2的32次方个不同的整数,其中一半是非负数吗,另外一半是负数。这些数字以0为中心向两边扩展。
整数的类型名称是int。在我们的计算机中整数类型和长整型类型一样

以上数据类型都叫做有符号类型
每个有符号类型都有一个对应的无符号类型,无符号类型的名称是在对应的有符号类型名称前加
unsigned(如 unsigned char,unsigned int 等)
无符号类型包含的数字个数和对应的有符号类型一样,但是不包含负数。

找出相关数据类型包含的数字范围是互相重叠且逐渐扩大的。

程序中不带小数点的数字后面加u这个表示这个数字的类型是无符号整数类型。

C语言中用浮点数表示带小数点的数字。
浮点数分为2种,单精度浮点类型和双精度的浮点类型。
双精度浮点类型可以记录更多小数点后 面的数位。
单精度浮点类型名称是float精度是double,程序中带小数点的默认是双精度浮点类型。
带小数点的数字后加f就表示这个数字类型是单精度浮点类型。
C语言中可以扩渣新的数据类型,新的数据类型叫做复合数据类型。
复合数据类型需要先创建然后才能使用。

C99规范中引入了布尔类型。
布尔类型中包含真和假两个数,它们叫做布尔值
计算机里面用0表示假,应1表示真
C语言中任何整数都可以当作布尔值使用。0当作布尔值使用的时候是假,其它整数当布尔值使用的时候是真。
一半程序中不使用布尔类型,直接使用整数类型代替就可以。

#配合使用的占位符,数据类型和占位符的对应关系。

char 和 unsigned char。 %c
Short %hd
Unsigned short. %hu
Long. %ld
Unsigned long %lu
Int %d
Unsigned int %u
Float. %f或%g
Double %lf或%lg

                                        %f和%lf会保留小数点后面无效的0,%g和%lg不会保留。

不同类型的存储区所包含的字节个数不同
sizeof 关键字可以用来计算一个存储区里包含的字节个事。
Char 和 unsigned char。 1个字节
short 和 unsigned short。 2个字节
long 和 unsigned long。 4个字节
int。 和。unsigned int。 4个字节
float。 4个字节
double 8个字节

sizeof小括号里可以放任何可以当作数字使用的内容

sizeof小括号中对任何存储区的内容的修改不会真正生效。

#sacnf标准函数

可以把用户在键盘上输入的数字记录到存储区域里。
为了使用这个标准函数,需要包含stdio.h的头文件。

scanf函数调用语句里应该使用存储区的地址表示存储区。
双引号里使用占位符表示存储区的类型。
如果双引号包含的不是占位符的内容就要求用户必须按顺序输入它们,否则程序无法获得数字。
如果用户输入的格式和双引号里规定的格式不一样程序就无法获得数字。
可以在一条scanf函数调用语句里获取多个数字。

#练习:

编写程序从键盘得到一个浮点数作为圆的半径,计算出圆的周长并把结果显示在屏幕上。

#计算机内存记录数据方式 二进制

一个字节为8个位,每个位记录0或1.
在把一个数字记录到字节里之前必须首先把这个数字拆分成多个0或1
用一组0或者1表示数字的方式叫做二进制。
任何一个数字既可以用十进制表示,也可以用二进制表示。
计算机只能采用二进制方式记录数字。

二进制表示数字的时候每个数位有一个编号,最右边的数位编号为0,向左依次递增。

二进制表示方式中某个数位里的1代表的数字可以用2的数位编号次方计算
二进制表示方式如果两个相邻数位的内容是一样的则左边数位代表的数字是右边数位代表数字的两倍

以上规则只适用于二进制表示的非负数。
二进制加1的时候把编号为0未知开始的连续多个1都变为0,把最右边的0变为1.

#十进制和二进制的转换。

二进制表示的非负数转换成十进制的时候只需要把所有数位里的1单独转换然后再相加就得到结果。

十进制转换成二进制:

不断对原始数字除以2并保留整数部分的操作得到一组数据。用这组数字分别做除以2取余的操作得到一组0或1,把这些0或1按照倒叙书写就得到转换结果。

#负数二进制十进制转换。

负数的二进制和十进制之间不能直接转换,必须借助相反数,
转换过程首先需要计算相反数,然后把相反数做转换,最后根据转换结果再计算相反数。

把一个二进制数字中每个数位的内容变成相反内容然后再加1就变成相反的二进制。
有符号类型二进制数字最左边的二进制数位可以用来判断数字的符号,这个数位叫做符号位。
如果符号位内容是0,表示数字是非负数,如果符号位内容为0表示负数。

#练习

编写程序从键盘得到一个0到127之间的数字,把它转化成二进制并显示在屏幕上

include <stdio.h>

int main() {

int num = 0;
printf("请输入一个数字:");
scanf("%d", &num);
printf("        %d\r", num % 2);
num = num / 2;
printf("       %d\r", num % 2);
num = num / 2;
printf("      %d\r", num % 2);
num = num / 2;
printf("     %d\r", num % 2);
num = num / 2;
printf("   %d\r", num % 2);
num = num / 2;
printf("  %d\r", num % 2);
num = num / 2;
printf(" %d\r", num % 2);
num = num / 2;
printf("%d\n", num % 2);
return 0;

}

#预习

1,八进制十六进制
2,操作符

Responses