顺序程序设计(2)
约 784 字大约 3 分钟
2024-07-07
19.字符型数据
字符型是以整型形式(ASCII码)存放在内存单元中。ASCII共128个字符(也就是最多可以用7位数表示)
类型 | 字符值 | 取值范围 |
---|---|---|
signed char | 1 | -128~127 |
unsigned char | 1 | 0~255 |
C99把字符型数据作为整型数据的一种
在使用有符号字符类型变量时,允许存储的值为负数,但是字符的代码不可能为负值,所以在存储字符时只用到了0~127这一部分。
20.getchar与putchar函数
#include <stdio.h> //该头文件有getchar与putchar函数的函数声明
void f1(void)
{
char ch = getchar(); //返回值为int型,返回值为用户输入的ASCII码,出错返回-1
putchar(ch); //putchar向屏幕输出一个字符
}
void f2(void) //从键盘中读入3个字符并输出
{
putchar(getchar());
putchar(getchar());
putchar(getchar());
}
int main(void)
{
f1();
f2();
return 0;
}
21.浮点型数据
数据类型 | 字节数 | 有效数字 | 数值范围(绝对值) |
---|---|---|---|
float | 4 | 6 | 0以及1.2e-38~3.4e38 |
double,long double | 8 | 15 | 0以及2.3e-308~1.7e308 |
long double | 16 | 19 | 0以及3.4e-4932~1.1e4932 |
从数值的左边第一个不为0的数字起,一直到这个数字结束,中间的数字叫这个值的有效数字
/*
注:
(一)所有常量末尾加的数据类型转换符可以大小写不分
(二)在目前学习过的所有格式声明中只有xeg可以不分大小写
*/
#include <stdio.h>
int main(void)
{
//1.定义实型变量
float a = 1.1F; //1.1F表示1.1是个float型数据
double b = 1.1;
long double c = 1e-8L;
printf("%d,%d,%d",sizeof(a),sizeof(b),sizeof(c));
//2.实型数据在格式化输入输出时所使用的格式声明——默认情况下使用带f和带e的格式声明只输出小数点后6位(第七位四舍五入)
printf("%f,%lf,%Lf\n",a,b,c); //小数形式
printf("%e,%le,%LE\n",a,b,c); //指数形式
printf("%g,%lg,%LG\n",a,b,c); //小数形式或者指数形式
return 0;
}
22.printf格式附加字符
//格式声明 = % 格式附加字符
#include <stdio.h>
int main(void)
{
printf("%5d\n",-12);
printf("%5c\n",'a');
printf("%5s\n","abcd");
printf("%-5dA\n",-12);
printf("%7.2f\n",12.345);
printf("%7.1f\n",12.345);
printf("%.5lf\n",12.345);
printf("%11lf\n",12.345);
return 0;
}
23.1scanf函数注意事项(2)
//scanf函数中不可以使用#
#include <stdio.h>
int main(void)
{
int a ;
/*
scanf("%5d",&a);
printf("%d\n",a);
*/
/*
scanf("%-5d",&a); scanf函数不支持负的域宽
printf("%d",a);
*/
double b;
scanf("%7.2lf",&b);
printf("%lf",b);
char ch;
while(ch = getchar()!='\n')
{
putchar(ch);
}
putchar('\n');
return 0;
}
23.2运算符(2)
#include <stdio.h>
int main(void)
{
int i = -1, j = 4;
printf("%d,%d\n",--i,--j);
printf("%d,%d\n",i,j);
/* printf("%d\n",--(i+j)); //error 自增自减运算符不能用于一个数值,只能用于一个变量 */
i = 1, j = 4;
printf("%d\n",i+++j);
int a;
printf("%d\n",sizeof((double) a)); //(double) a是把a这个数值表达式转化为double型数据,而不是把a变量转化为double型变量
printf("%d\n",sizeof(a));
return 0;
}