一、 整型数据存储格式 1、整形数据在内存中是以补码形式存储的。 2、整数的原码,反码,补码相同,符号位是0,其余各位表示数值。 3、负数的原码,反码和补码不同。
原码:符号位为1,其余各位表示数值的绝对值。 反码:符号位为1,其余各位对原码取反。 补码:反码末位加1。上面说的都是有符号的整数,而无符号整数不能表示负数。
二、实型数据存储格式 实型数据一般占据4个字节的内存空间,按指数形式存储。
实型数据的存储规律
小数部分占的位数越多,数值的有效数字越多,精度越高。 指数部分占的位数越多,则能表示的数值范围越大。字符型数据的存储格式 每个字符变量被分配一个字节的内存空间。存储的是字符的asscll码。例如C的asscll码是67,用二进制表示为1000011,在内存中以0 1 0 0 0 0 1 1 存储。
基本数据类型 整型的输入和输出:使用基本格式说明符%d、%o和%x输入输出整型数据
#include<stdio.h> int main() { int i,j,k; printf("输入i,j,k,分别为八进制、十进制和十六进制:\n"); scanf("%o%d%x",&i, &j, &k); printf("分别输出i,j,k的八进制、十进制和十六进制:\n"); printf("%o %d %x\n",i, i, i); printf("%o %d %x\n",j, j, j); printf("%o %d %x\n",k, k, k); return 0; }可以看出,可以像对数值那样对字符进行操作。
字符型常量:指的是单个字符,用一对单引号括起来的字符表示, 转义字符:是以反斜杠’\’开头的字符序列。 例如:’\r’回车 ‘\n’回车换行。
字符的输入与输出 可以调用函数scanf、printf、getchar和putchar。 在输入多个字符时,这些字符之间不能有空格,因为空格本身也是字符,它作为字符看待。 注意:字符输入时不需要单引号,这一点与字符常量在程序中的表示不同。 getchar和putchar,每次调用getchar时,它会读入一个字符,并返回这个字符。为了保存返回的字符,需要使用赋值操作将返回的值存储在变量中。ch=getchar(); putchar是输出单个字符,例如;putchar(ch); scanf和printf可以一次性输入输出多个字符,而getchar和putchar一次只能输入输出一个字符,但是它有灵活性的使用方法,例如:`while((ch=getchar())!=’\n’); 这段程序用于输入输出多个字符,当碰到回车换行时结束,这也是getchar常用的方法。
/*输入一串字符以回车作为结束,统计输入字符个数*/ #include<stdio.h> int main() { char ch; int num=0; printf("输入一串字符以回车符结束:\n"); while((ch=getchar())!='\n') { num++; } printf("一共输入了%d个字符\n",num); return 0; }程序分析:对于循环次数未知的程序,一般采用while语句;对于统计个数的程序通常设置一个整型变量记录数值,且在使用前一定要赋值为0,否则将得到任意值;循环条件的书写最为重要。
计算数据类型在计算机中所占内存大小。
#include<stdio.h> int main() { printf("sizeof(char)=%ld\n",sizeof(char)); printf("sizeof(int)=%ld\n",sizeof(int)); printf("sizeof(float)=%ld\n",sizeof(float)); printf("sizeof(double)=%ld\n",sizeof(double)); return 0; } 可以看出char=1,int=4,float=4,double=8字节。