C语言学习笔记---2.C语言数据类型
1.C语言基本数据类型
1.1 int类型
int类型是有符号整型,即int类型的值必须是整数,可以是正整数、负整数或零。其取值范围依计算机系统而异。一般而言,储存一个int要占用一个机器字长。
声明int类型变量:先写上int,然后写变量名,最后加上一个分号。要声明多个变量,可以单独声明每个变量,也可在int后面列出多个变量名,变量名之间用逗号分隔。
也可通过scanf函数获取;
int sows;
scanf("%d",sows);
初始化:在C语言中,初始化可以直接在声明中完成。只需在变量名后面加上赋值运算符(=)和待赋给变量的值即可。
int boars = 1;//等价于int boars; boars = 1;
打印变量:可以使用printf()函数打印int类型的值。第2章中介绍过,%d指明了在一行中打印整数的位置。%d称为转换说明,它指定了printf()应使用什么格式来显示一个值。
printf("%d minus %d is %d\n", ten, 2, ten - two);
printf("\na = %d, b = %d, c = %d",a,b,c);
printf("\na = %o, b = %x, c = %#o",a,b,c);
printf("\na = %d, b = %#x, c = %#X",a,b,c);
在C程序中,既可以使用和显示不同进制的数。不同的进制要使用不同的转换说明。以十进制显示数字,使用%d;以八进制显示数字,使用%o;以十六进制显示数字,使用%x。另外,要显示各进制数的前缀0、0x和0X,必须分别使用%#o、%#x、%#X。
1.2 其他类型整形变量
C语言提供3个附属关键字修饰基本整数类型:short、long和unsigned。储存空间由少到多依次是:short int , int ,long int,long long int(除了int外其他都可将int省略),上述类型前面有关键词unsigned表示无符号整型变量,储存字节数不变,只能用于表示正数。
打印其他类型整型变量:
打印unsigned int类型的值,使用%u转换说明;打印long类型的值,使用%ld转换说明。
对于short类型,可以使用h前缀。%hd表示以十进制显示short类型的整数,%ho表示以八进制显示short类型的整数
h和l前缀都可以和u一起使用,用于表示无符号类型。例如,%lu表示打印unsigned long类型的值。
short d = 20;
long e = 4096;
long long g = 20900000;
unsigned short d_1 = 20;
unsigned long e_1 = 9999;
unsigned long long g_1 = 99999999;
printf("\nd = %hd , e = %ld, g = %lld\n",d,e,g);
printf("d_1 = %hu, e_1 = %lu, g_1 = %llu",d_1,e_1,g_1);
2.char类型变量
char类型用于储存字符(如,字母或标点符号),但是从技术层面看,char是整数类型。
2.1申明char类型
char类型变量的声明方式与其他类型变量的声明方式相同。
char response;
char itable,latan;
2.2字符常量和初始化
在C语言中,用单引号括起来的单个字符被称为字符常量(character constant)。
char broiled; /* 声明一个char类型的变量 */
broiled = 'T'; /* 为其赋值,正确 */
broiled = T; /* 错误!此时T是一个变量 */
broiled = "T"; /* 错误!此时"T"是一个字符串 */
C语言将字符常量视为int类型而非char类型。
2.3 非打印字符
单引号只适用于字符、数字和标点符号,浏览ASCII表会发现,有些ASCII字符打印不出来。例如,一些代表行为的字符(如,退格、换行、终端响铃或蜂鸣)
C语言提供了3种方法表示这些字符:
1.使用ASCII码例如蜂鸣字符的ASCII值是因此可以这样写:
char beep = 7;
2.使用特殊的符号序列表示一些特殊的字符,把转义序列赋给字符变量时,必须用单引号把转义序列括起来。例如:
char nerf = '\n';
3.用十六进制形式表示字符常量,即反斜杠后面跟一个x或X,再加上1~3位十六进制数字
2.4打印字符
printf()函数用%c指明待打印的字符,例如:
char ch;
ch = 'D';
printf("ch = %c",ch);
3.浮点类型变量float,double,long double
3.1浮点类型声明
float noah, jonah;
double trouble;
float planck = 6.63e-34;
long double gnp;
3.2浮点类型常量
浮点型常量的基本形式是:有符号的数字(包括小数点),后面紧跟e或E,最后是一个有符号数表示10的指数。例如:-1.56E+12,2.87e-3
正号可以省略。可以没有小数点(如,2E5)或指数部分(如,19.28),但是不能同时省略两者。可以省略小数部分(如,3.E16)或整数部分(如,.45E-6),但是不能同时省略两者。
默认情况下,编译器假定浮点型常量是double类型的精度。
C99 标准添加了一种新的浮点型常量格式:用十六进制表示浮点型常量,即在十六进制数前加上十六进制前缀(0x或0X),用p和P分别代替e和E,用2的幂代替10的幂(即,p计数法)例如:0xa.1fp10
十六进制a等于十进制10,.1f是1/16加上15/256(十六进制f等于十进制15),p10是1024。0xa.1fp10表示的值是(10 + 1/16 +15/256)×1024(即,十进制10364.0)。
3.3打印浮点数
printf()函数使用%f转换说明打印十进制记数法的float和double类型浮点数,用%e打印指数记数法的浮点数。如果系统支持十六进制格式的浮点数,可用a和A分别代替e和E。打印long double类型要使用%Lf、%Le或%La转换说明。
float data = 3.3E9;
double data_1 = 1.2e-10;
printf("data is %f ,equal %e",data, data);
4.sizeof函数
sizeof是C语言的内置运算符,以字节为单位给出指定类型的大小。C99和C11提供%zd转换说明匹配sizeof的返回类型一些不支持C99和C11的编译器可用%u或%lu代替%zd。
例如:
printf("data is %f ,equal %e\n",data, data);
printf("Type int has a size of %zd bytes.\n",sizeof(int));
printf("Type char has a size of %zd bytes.\n",sizeof(char));
printf("Type long has a size of %zd bytes.\n",sizeof(long));
printf("Type long long has a size of %zd bytes.\n",sizeof(long long));
printf("Type double has a size of %zd bytes.\n",sizeof(double));
printf("Type long double has a size of %zd bytes.\n",sizeof(long double));
结果:
Type int has a size of 4 bytes.
Type char has a size of 1 bytes.
Type long has a size of 4 bytes.
Type long long has a size of 8 bytes.
Type double has a size of 8 bytes.
Type long double has a size of 16 bytes.
最新文章
- 报错:org.hibernate.AssertionFailure: null id in com.tt.hibernate.entities.News entry (don't flush the Session after an exception occurs)
- jquery文件上传控件 Uploadify
- java 调用微信截图工具
- C# Enum Type
- 使用eclipse maven遇到的错误(转)
- Lucene 搜索功能
- JSP 核心 (等待更新)
- winPcap_2_编译环境*注意*
- Linux权限管理(笔记)
- ABAP 常用FUNCTION集锦(转)
- AngularJS进阶(二十九)AngularJS项目开发技巧之localStorage存储
- C语言在linux内核中do while(0)妙用之法
- __init__和__new__的异同
- java泛型的理解
- ROM和RAM区别
- DNS 预解析
- GCC编译器ABI
- vue-router如何做历史返回提示?
- 20165210 Java第八周学习总结
- 最新Flume1.7 自定义 MongodbSink 结合TAILDIR Sources的使用
热门文章
- Vue实现点击按钮进行文件下载(后端Java)
- Compile Java Codes in Linux Shell instead of Ant Script
- Qt Designer中自定义控件的使用(提升法与插件法)
- Spring学习01(IOC)
- ETL需求要求
- miniFTP项目集合
- SpringCloud升级之路2020.0.x版-19.Eureka的服务端设计与配置
- Longhorn,企业级云原生容器分布式存储 - 高可用
- springboot与通用mapper的整合
- 十一:JavaWeb中的监听器(二)