C语言学习(三)——数据类型

C语言数据类型

一、基本数据类型

基本数据类型及取值范围
数据类型类型说明字节数取值范围
char(signed char)字符1-128~127
short(short int)短整型2-32768~32767
int整型4-2147438648~2147438647
long (long int)长整型4-2147438648~2147438647
long long (long long int) 8-9223372036854775808~9223372036854775807
unsigned char无符号字符10~255
unsigned short无符号短整型20~65535
unsigned int无符号整型40~4294967295
unsigned long无符号长整型40~4294967295
unsigned long long 80~18446744073709551615
float单精度浮点型(实数)4±3.4E38(精确到6位小数)
double双精度浮点型8±1.7E308(精确到15位小数)
long double长双精度浮点型12±1.19E4932(精确到18位小数)

不同编译系统中的变量所占的字节不一定相同,用C语言提供的计算类型字节数的运算符——sizeof()运算符可获知某种数据类型在内存中所占的字节数。

#include<stdio.h>
int main(void)
{
    printf("Data type                  Number of bytes\n");
    printf("-------------              --------------------\n");
    printf("char                         %d\n",sizeof(char));
    printf("int                          %d\n",sizeof(int));
    printf("short                        %d\n",sizeof(short));
    printf("long                         %d\n",sizeof(long));
    printf("float                        %d\n",sizeof(float));
    printf("double                       %d\n",sizeof(double));
    printf("long double                  %d\n",sizeof(long double));
    
    return 0;
}

这个程序在Windows系统中用Code::Blocks编译得到的运行结果如下:

在计算机内存中,计算机处理的最小单元就是位(bit),8位构成1字节。

简单计算整型数据类型的取值范围:

有符号整型:最小值:-2∧(8*(sizeof(类型))-1),最大值:2∧(8*(sizeof(类型))-1)-1

无符号整型:最小值:-2∧(8*(sizeof(类型))),最大值:2∧(8*(sizeof(类型)))-1

 

二、常量和变量

1、常量(Constant)是在程序使用之前预先设定好的,在整个程序的运行中保持类型和值都不变的数据。按照类型划分为:整形常量、实型常量、字符常量、字符串常量、枚举常量。

(1)整型常量

①表现形式:

十进制由数字0~9组成,数字前可以带正负号。
八进制由数字0开头,后面跟0~7的数字序列组成。
十六进制由数字0加字母x(大小写均可)开头,后跟0~9,a~f(大小写均可)的数字序列组成。

 ②长整型常量由常量值后跟L或l来表示,无符号整型常量由常量值后跟U或u来表示,无符号长整型常量由常量值后跟LU、Lu、lU或lu来表示。

(2)实型常量(实数、浮点数)

①表现形式:

十进制小数:.98等价于0.98,18.等价于18.0

指数形式:C语言中以e或E来表示10为底的指数。e的左边是数值部分(有效数字),可以表示成整数或小数形式,不能省略;e的右边指数部分必须是整数形式。

②实型常量隐含按双精度型(double)处理,单精度实型常量由常量值后跟F或f来表示,长双精度(long double)实型常量由常量值后跟L或l来表示

(3)字符常量

C语言中由单引号括起来的一个字符,如'a'、'2'等

特殊形式的字符常量——转义序列(Escape Sequence)

常用转义序列
字符含义字符含义
'\n'换行(Newline)'\a'响铃报警(Alert or Bell)
'\r'回车(但不换行)(Carriage Return)'\"'一个双引号(Double Quotation Mark)
'\0'空字符,通常用作字符串结束标志(Null)'\''单引号(Single Quotation Mark)
'\t'水平制表(Horizontal Tabulation)'\\'一个反斜线(Backslash)
'\v'垂直制表(Vertical Tabulation)'\?'问号(Question Mark)
'\b'退格(Backspace)'\ddd'1~3位八进制ASCII码值所代表的字符
'\f'走纸换页(Form Feed)'\xhh'1~2位十六进制ASCII码值所代表的字符

(4)字符串常量

字符常量是由一对双引号括起来的一个字符序列,如:"qwer","a","123"等等。

为便于C程序判断字符串是否结束,系统对每个用双引号括起来的字符串常量都添加一个字符串结束标志——ASCII码值为0的空操作符'\0'。它不引起任何控制动作,也不显示。

(5)宏常量(符号常量)

宏常量,也称符号常量,是指用一个标识符号代表的一个常量,这时该标识符与此常量是等价的。

定义符号常量:

①使用宏定义编译指令#define,形式为: #define  标识符 字面常量。

注意:#define语句不以分号结尾,如果在行末尾加分号,则会连同分号一起进行替换。宏常量名一般采用大写字母表示。

②使用关键字const,const是一个修饰符,可用于任何变量声明中。被声明为const的变量在程序执行期间不能被修改,const常量只能在定义时赋初值,不能在程序中改变其值。如:const PI 3.1415926;

(6)枚举(enumeration)常量

枚举数据类型描述的是一组整型值的集合,可用关键字enum来定义这种类型。

如:enum Weekday {Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday};

名称Weekday跟在关键字enum后面,这个名称被称为枚举标记,枚举标记也可以省略不写。包含在花括号内的标识符均为整型常量,称为枚举常量(或枚举器)。除非特别指定,否则这组常量的第一个常量的值为0,第二个常量值为1,以后依次递增1。

 C语言允许在枚举类型定义时,明确地设置每一个枚举常量的值,如:

enum response{no = -1,yes = 1,none = 0};

可以声明response类型的一个新变量,enum response answer;变量answer可被赋予no,yes,none这三种值的任何一种。也可直接初始化,enum response answer = yes;

也可以在定义枚举类型时,声明该类型的变量并初始化变量:
 

enum Weekda{Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday}today,tomorrow;

enum Weekday {Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday}today=Monday,tomorrow=Tuesday;

枚举标记后面的变量表中的每个标识符都代表一个整型常数,这些标识符只是一个整型常数的名字,不是字符串,因此它们可以用于使用整型常数值的任何场合,但不能将其作为字符串直接输入和输出。

 

2、变量(Variable)是在程序中可以改变、可以赋值的量。

(1)①在C语言中,变量必须遵循“先定义,后使用”的原则。变量定义语句的形式:(定义多个相同类型的变量时,它们之间需用逗号分隔)

类型关键字  变量名1,变量2,······;

②变量名是用户定义的标识符,用于标识内存中一个具体的存储单元,在这个存储单元中存放的数据称为变量的值。通常,定义但未赋初值的变量的值是随机值(静态变量和全局变量除外)。

初始化:类型关键字 变量名1 = 常量1(,变量名2 = 常量2,···)

(2)变量名规则:

①可包含字母,数字和下划线;

②第一个字符不能是数字;

③字母大小写有区别;

④关键字不能用作变量名。

(3)变量名风格:

①通常,变量名用小写字母,常量名全部用大写字母;

②使用有描述性、有意义的变量名;

③使用下划线将变量名的单词分开 ,如:interest_rate;

④驼峰表示法:将每个单词的第一个字母大写,如:interestRate;

⑤在变量名中体现其类型,如:i_smart,一眼能看出是int类型的变量。

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
sscanf函数是C语言一个非常常用的函数,它可以将一个字符串按照指定的格式转换成相应的数据类型。在嵌入式开发,sscanf函数也是非常常见的,因为很多时候需要从串口或者其他外部设备数据,并将其转换成相应的数据类型进行处理。下面是一些sscanf函数的使用技巧: 1. 使用sscanf函数时一定要注意格式字符串的正确性。格式字符串的占位符必须与待转换的数据类型相对应,否则会发生未知错误。 2. 如果待转换的字符串包含多个数据,可以使用多个占位符进行转换。例如,如果待转换的字符串为"1,2,3",可以使用" %d,%d,%d"的格式字符串进行转换。 3. 可以使用sscanf函数的返回值来判断转换是否成功。如果返回值等于待转换字符串的长度,则说明转换成功,否则转换失败。 4. 如果待转换的字符串包含浮点数,可以使用"%f"或者"%lf"的格式字符串进行转换。 5. 如果待转换的字符串包含十六进制数,可以使用"%x"的格式字符串进行转换。 6. 如果待转换的字符串包含字符或字符串,可以使用"%c"或者"%s"的格式字符串进行转换。 7. 如果待转换的字符串包含指针类型的数据,可以使用"%p"的格式字符串进行转换。 总之,在使用sscanf函数时一定要注意格式字符串的正确性,否则很容易出现转换错误的情况。同时,还应该注意sscanf函数返回值的判断,以确保转换的正确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值