C语言的基本数据类型和存储类

简介: C中的整常数有三种表示形式:进制整数、八进制整数和十六进制整数十进制数:最高位非零;八进制数:以数字零开头;十六进制:以数字零和字母x开头,a-不区分大小写

1.1 整型数据

1.1.1整形常量


C中的整常数有三种表示形式:进制整数、八进制整数和十六进制整数

十进制数:最高位非零;八进制数:以数字零开头;十六进制:以数字零和字母x开头,a-不区分大小写


1.1.2 整型变量


C中的整型变量分为有符号和无符号两种

有符号整型变量细分为标准整型(int)、短整型(short)、长整型(long),值可正可负

无符号整型变量也可分为标准整型(unsigned int)、短整型(unsignedshort)长整型(unsigned long),其值不能为负

表示范围不同:short(2个字节)<=int(2个字节)<=long(4 个字节)

16位的有符号整数能表示的数的有效范围:-215~25-1=-32768~32767


1.1.3整型数据的存储表示


正整数:以原码形式存放在内存中,字长为16 时,整数范围取0-32767负整数:以补码形式存放在内存中

-5 的补码:16位0/1 代码的模10000000000000000(16个零)模-101(5)(1000000000000000)₂=(-32768)10(11111)=()1


1.2 字符型数据


1.2.1字符型常量


字符型常量是由一对单引号括起来的单个字符(可打印)

一个转义序列是一个反斜线后跟特定的字符,表示某些不可打印的字符(n换行符\t水平制表符\b退格符\r回车符I反斜线符10空字符\ddd位型ddd是1至3位八进制数字loxff位型ff是1至2位十六进制数字)ASCII码八位



1.2.2字符型变量char cl.c2;


每个字符型变量可存放一个字符


1.2.3字符型数据的存储表示


字符数据在计算机内部是以一个字节的二进制形式表示(ASCII码)

+printf:参数可以有多个,但第一个参数必须是字符串,称为格式串(format-string)

printf首先对格式串从左到右扫描,当遇到可显示字符时就在终端上原样输出,当遇到控制字符(如n响铃符等)就产生相应的动作(换行,响铃等),当遇到转换字符时,就将后面的实参依次按转换符的要求转换并输出,常用的转换符有:%d十进制整型、%c字符型、%f浮点型、%s 字符串型

C编译系统将字符型数据当成有符号整型还是无符号整型没有规定


将字符串“12345”转换成12345'1'0=15-0=5


1.2.4 字符串常量


字符串常量是用一对双引号括起来的零个或多个字符序列


。“”只充当字符串的分界符,而不是字符串的一部分;如果要在字符串中出现双引号,则必须经过转义序列,如The“a”is an indefart写成字符串为:“The \42a\42 is an indef art”字符串中所含的字符个数称为字符串的长度;字符串所占的空间为长度+1,增加的一个字节存放字符串的结尾标志'10例:字符串“10mn”的长度=0

·转义序列也可出现在字符串中,但只作为一个字符看待


1.3浮点型数据


1.3.1浮点型常量


浮点型常量有非指数型和指数型两种;指数型:e(E)之前必须有数字,之后的指数必须为整数,且不能插入空格!



1.3.2浮点型变量


浮点型变量通过保留字float来说明


1.3.3浮点型数据的存储表示

表示:二进制的浮点形式

任何一个二进制实数总可以表示成:N=Sx2°其中:pS都是有符号二进制整数,p称为阶码(8位),S称为尾数(24位),S中无小数点或小数点约定为在最前头。

p的字长为nl,S的字长为n2,则有-2"≤p≤2"--1-2"2≤S≤22-1-1,则一个实数的字长为:n1+n2

令n2=24,n1=8,则N=Sx2的取值范围是2-1≤N≤2约为103≤N≤103,N的

精度为7位有效数字。


1.4双精度型数据


字长比浮点型多一倍,一般占用8个字节;精度大约为17位有效数字,浮点型为7位精度。双精度型变量是由保留字double来说明的



1.5变量的初始化


1.6变量的存储类


变量的两个属性:存在性和可见性


存在性:是指变量都具有一个数据类型并以一定的方式存于内存之中可见性:是指在其作用域中是可见的(活动的),出了作用域就不可见了


变量的作用域:是指变量有定义的程序部分

变量的以上两个属性是由以下四个变量存储类决定的:

自动的(auto)静态的(static)寄存器(register) 外部的(extern)



1.6.1 自动变量


由保留字auto说明或定义的变量(autointa),auto可省略不写


自动变量是局部变量,其作用域局限于其所在的函数或块


自动变量每进入一次函数体,就赋一次指定的初值



1.6.2寄存器变量(register)


寄存器变量的用法和作用域规定与自动变量相同


寄存器变量无地址,无法对其进行求地址运算

器存器变量说明应尽量靠近其使用的地方,用完后尽快释放


相关文章
|
10天前
|
存储 程序员 编译器
C 语言中的数据类型转换:连接不同数据世界的桥梁
C语言中的数据类型转换是程序设计中不可或缺的一部分,它如同连接不同数据世界的桥梁,使得不同类型的变量之间能够互相传递和转换,确保了程序的灵活性与兼容性。通过强制类型转换或自动类型转换,C语言允许开发者在保证数据完整性的前提下,实现复杂的数据处理逻辑。
|
10天前
|
存储 编译器 C语言
【C语言】数据类型全解析:编程效率提升的秘诀
在C语言中,合理选择和使用数据类型是编程的关键。通过深入理解基本数据类型和派生数据类型,掌握类型限定符和扩展技巧,可以编写出高效、稳定、可维护的代码。无论是在普通应用还是嵌入式系统中,数据类型的合理使用都能显著提升程序的性能和可靠性。
33 8
|
3月前
|
存储 编译器 C语言
C语言存储类详解
在 C 语言中,存储类定义了变量的生命周期、作用域和可见性。主要包括:`auto`(默认存储类,块级作用域),`register`(建议存储在寄存器中,作用域同 `auto`,不可取地址),`static`(生命周期贯穿整个程序,局部静态变量在函数间保持值,全局静态变量限于本文件),`extern`(声明变量在其他文件中定义,允许跨文件访问)。此外,`typedef` 用于定义新数据类型名称,提升代码可读性。 示例代码展示了不同存储类变量的使用方式,通过两次调用 `function()` 函数,观察静态变量 `b` 的变化。合理选择存储类可以优化程序性能和内存使用。
162 82
|
2月前
|
存储 C语言
【c语言】数据类型和变量
本文介绍了C语言中的数据类型和变量。数据类型分为内置类型和自定义类型,内置类型包括字符型、整型、浮点型等,每种类型有不同的内存大小和取值范围。变量分为全局变量和局部变量,它们在内存中的存储位置也有所不同,分别位于静态区和栈区。通过示例代码和图解,详细阐述了这些概念及其应用。
47 1
|
2月前
|
C语言
3.4 C语言基本数据类型2
在C语言中,声明一个整型(int)变量时,需先写入&#39;int&#39;关键字,后跟变量名并以分号结尾。若同时声明多个变量,可在&#39;int&#39;后用逗号分隔列出所有变量名。例如,`int erns;` 或 `int hogs, cows, goats;` 都是合法声明。变量声明后需通过赋值语句如 `cows = 112;` 或使用函数如 `scanf()` 来初始化其值。
47 10
|
2月前
|
存储 程序员 C语言
3.1 C语言基本数据类型
在C语言中,整数类型如`int`类型是很有用的,它属于有符号整型,意味着该类型的值必须是整数,并且可以是正整数、负整数或者零。`int`类型的数值范围依据计算机系统有所不同,通常取决于系统的位宽。例如,在早期16位的IBM PC兼容机上,`int`类型使用16位存储,取值范围为-32768至32767;而在当前32位系统中,使用32位存储,拥有更宽泛的取值范围。随着64位处理器的普及,`int`类型能够存储的整数范围将进一步扩大。根据ISO C标准,`int`类型的最小取值范围被规定为-32768到32767。系统通常会利用一个特殊的位来表示整数的正负。
37 10
|
2月前
|
C语言
3.1C语言基本数据类型
在C语言中,初始化变量是指为变量设定初始值,通常在声明时直接完成,例如 `int cows=32;`。应注意避免在同一语句中混合初始化与未初始化的变量,如 `int dogs, cats=94;` 这样的写法容易引起误解。此外,整型常量如21、32等在C语言中被视为int类型,但非常大的整数则不然,且带有小数点或指数的数值不属于整型常量。
28 9
|
2月前
|
存储 C语言
C语言中的浮点数存储:深入探讨
C语言中的浮点数存储:深入探讨
|
2月前
|
存储 C语言
深入C语言内存:数据在内存中的存储
深入C语言内存:数据在内存中的存储
|
2月前
|
存储 C语言
初识C语言:常量与变量中寻找数据类型
初识C语言:常量与变量中寻找数据类型