C语言学习笔记系列—第三章

一,数据类型

1.1,int类型(整型)

C语言中使用最多的数据类型,可表示不同的取值范围和正负值。但是必须是一个整数,可以是正整数,0或者负整数,只要是整数就行。都2022年了咱们使用的操作系统都是64位了,所以不太担心存储整数。

之前在第一章和第二章中都是用声明int的操作:

int a,b,c;
int n;
int n2; 
int n3;

但是以上都只是声明变量类型并没有给变量赋值,赋值方式可以使用a = 3;或是以后章节会介绍输入方式(scanf())的方式给变量赋值。C语言把不含小数点和指数的数作为整数。所以说,24和-56都是整型常量,但是24.0和2.2E1则不是整型。

1.2,输出(打印)int值

使用printf()函数打印int类型的值时使用%d来表示打印整数的位置。%d称为转换说明,它指定了printf()应使用什么格式来显示一个值。格式化字符串中的每个%d都与待打印变量列表中相应的int值匹配。就比如下列来自第二章程序中的printf():

特别注意,如果在printf()中缺少参数(也就是说没有给%d提供任何值的话),那么程序就会打印程序中的任意值。比如下列操作:

那么输出结果将会是:

1.3,float和double类型(浮点型数据类型

在1.1介绍了整型,也就是不包含小数点类型。那么带小数点的数据类型就是使用float和double,所以在写程序的时候根据需求声明,这两种浮点类型主要区别在于它们的取值范围,如下表所示:

类型比特数有效数字数值范围
float326-7-3.4*10(-38)~3.4*10(38)
double6415-16-1.7*10(-308)~1.7*10(308)

其实在初学者阶段使用float就都够用了。

在C语言程序中声明浮点型变量以及赋值方式(与之前整型的赋值方式大同小异):

float noah, jonah;
double trouble;
float a=0.1;

1.4,输出(打印)float和double值

与整型int不同的是printf()函数使用%f转换说明打印十进制记数法的float和double类型浮点数。在C语言中,float类型的数据默认保留小数点后6位,不足6位的以0补齐。举例:

int b;  
float a=0.1f; 
b = 6 ;
printf("a与b的乘积c = %f",a*b);
printf("a与b的乘积c = %.2f",a*b);      //补充一句如果觉得默认保留6位小数点看着烦可以使用(%.2f)保留两位小数

二,程序案例

错误版本:

#include <stdio.h>
int main(void)
{
    int n = 3;
    int m = 2;
    float f = 9.0f;
    float g = 5.0f;
    
    printf("%d\n", n, m);    
    printf("%d %d %d\n", n); 
    printf("%d %d\n", f, g); 
    
    return 0;
}

输出的结果为:

其实是可以看出问题均出现在了最后的输出环节(printf())中:第九行中变量过多、第十行中变量过少、第十一行由于f和g声明数据类型为浮点型,所以在输出时应该使用%f来表示输出浮点型变量值。所以正确版本应该是:

#include <stdio.h>
int main(void)
{
    int n = 3;
    int m = 2;
    float f = 9.0f;
    float g = 5.0f;
    
    printf("%d %d\n", n, m);   
    printf("%d\n", n);
    printf("%f %f\n", f, g); 
    
    return 0;
}

这样输出结果为:

三,字符数据类型-char类型

char类型用于存储字符(如,字母或标点符号),所以char类型变量的声明方式与其他类型变量的声明方式相同。但其实char类型在程序中也算是一个整型数据,所以如果在输出printf()中使用%d的话,答案输出为90,这是因为大写的Z在ASCII码中十进制存储是90。比较有意思,读者如果有兴趣可以多尝试一些输出方式或者声明方式,比如将char KingZsf声明为90输出尝试使用%c同样得出结果是Z。

char KingZsf;
char wca, ltcb;
char KingZsf = 'Z';   //通过初始化把字母A赋给KingZsf
printf("%c", KingZsf);   //输出结果为 Z
printf("%d", KingZsf);   //输出结果为 90

四,总结

补充一些内容便于记,包括在第二章没有详细介绍的\n(字符转义序列)

C语言的数据类型关键字

最初 K&R 给出的关键字C90标准添加的关键字C99标准添加的关键字
intsigned_Bool (布尔型)
shortvoid_Complex(复数)
long_Imaginary(虚数)
unsigned
char
float
double

字符转义序列(粗体比较常用)

名称转义序列名称转义序列
换行符\n回退符\b
水平制表符\t垂直制表符\v
单引号\’换页符\f
双引号\”问号?
回车符\r报警(响铃)符\a
反斜杠\\

本章主要介绍了程序的数据类型(整型与浮点型),知识点还有很多细节感兴趣的读者可以移步至C语言参考书,很多枯燥的概念没有详细写。

滚动至顶部