-
C语言的数据类型
#include<stdio.h>
int main()
{
//整形(int long longlong short)
int a = 10;//int类型 大小4个字节,能表示的范围-2^(32-1) – 2^(32-1)-1 (即 -2147483648 ~ 2147483647) 使用格式int 变量名 = 值
printf("%d\n", a);//打印格式%d (\n表示换行符)
long int b = 11; //数据类型大小是 4 字节,能表示的数值范围是- 2 ^ (32 - 1) – 2 ^ (32 - 1) - 1 (即 - 2147483648 ~2147483647)使用格式为 int 变量名 = 值;
printf("%ld\n", b);//打印类型是 % ld
long long c = 12;//数据类型大小是 8 字节,能表示的数值范围是-2 ^ (63) ~2 ^ (63) - 1 (这个数足够大了),使用格式为 long long 名 = 值;
printf("%lld\n", c);//打印类型是 % lld ,
//unsigned符号整形表示数据量,即没有负数
unsigned int d = -5;
printf("%u", d);//erro
/*(1)unsigned int 类型
数据类型大小是 4 字节,能表示的数值范围是
0 – 2 ^ (32) - 1 (即 0~4294967295)
打印类型是 % u ,使用格式为 unsigned int 名 = 值;
(2)unsigned short 类型
数据类型大小是 2 字节,能表示的数值范围是
0 ~2 ^ 8 - 1 (即 0~65535)
打印类型是 % hu ,使用格式为 unsigned short 名 = 值;
(3)unsigned long 类型
数据类型大小是 4 字节,能表示的数值范围是
0 – 2 ^ (32) - 1 (即 0~4294967295)
打印类型是 % lu ,使用格式为 unsigned long 名 = 值;
(4)unsigned long long 类型
数据类型大小是 8 字节,能表示的数值范围是
0~2 ^ 63 - 1
打印类型是 % llu ,使用格式为 unsigned long long 名 = 值;*/
return 0;
}
-
常量与变量
常量:在程序运行过程中其值不能被修改的量称为常量
常量区分为一下
说明:为了方便使用,可以用一个符号名来代替一个常量
#include<stdio.h>
#define PRICE 30 //PRICE是一个常量后面不能在对其值进行修改
int main()
{
int num =2;
int Div=num*PRICE;
//此时PRICE是常量其值不能够被修改所以下面操作是错误的
//PRTCE=30//erro
printf("%d",Div);
return 0;
}
变量:变量代表内存中具有特定属性的一个存储单元,它用来存放数据,也就是变量的值,在程序运行期间,这些值是可以改变的。
#include<stdio.h>
int main()
{
int a = 10;//a变量初始化为10
a = 20;//因为a是变量,所以可以改变他的值,将其值修改为20
printf("a=%d ", a);//输出a=20
return 0;
}
变量名实际上是一个以一个名字对应代表一个地址,在对程序编译连接时由编译系统给每一个变量名分配对应的内存地址。从变量中取值,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据
- 用来标识对象名字(包括变量、函数、数组、类型等)的有效字符序列 。
- C语言中,有3类标识符:关键字,系统预定义的标识符 ,用户标识符。
- C语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线开头。
- C语言规定不能用C语言系统规定的32个关键字和系统预定义标识符做为用户标识符
-
#include<stdio.h> int main() { int arr=10;//arr就是用户定义的变量名 int arr1=10;//arr1也是用户定义的变量名 int Arr1=10; int _arr=10; int Student_name=10; int lotus_1_2_=10; //以上都是可以的 //下面是错误案例 int 6arr=10; int #arr=10; int arr. =10; int M.D.John=10; int ¥123,3D64; int a>b; return 0; }
编译系统将大写字母和小写字母认为是两个不同的字符。 建议变量名的长度最好不要超过8个字符。 在选择变量名和其它标识符时,应注意做到“见名知意”,即选有含意的英文单词 (或其缩写)作标识符。 要求对所有用到的变量作强制定义,也就是“先定义,后使用” 。
-
整型数据
整形常量即整常数。在C语言中,整常熟可以用一下三种形式
(1)十进制整数:123,234,5;
(2)八进制。(以0开头的是八进制数字):0123表示八进制123等于十进制的83,-011表示八进制-11等于十进制-9;
(3)十六进制,以0x开头的数是16进制:0x123表示十六进制123等于十进制291,-0x12表示十六进制-12等于十进制-18
整形变量用来存放整型常量 。整型变量的基本类型为int类型。C语言的整形基本类型分为:基本整形,短整型,长整型(注意)ANSIC标准没有规定以上各种数据类型所占的内存字节数,而是由各计算机系统自行决定例如:Turbo C中,int型和short型数据都是2个字节,即16个二进制位。long型数据是4个字节,32位。而VC++则给short型数据分配2个字节,16位,int和long型数据都是4个字节,32位 。64位下VS中int为4个字节,short为2个字节,long int 为4个字节 long long 为8个字节
在VC++中
#include<stdio.h>
int main()
{
int a, b, c, d;
unsigned u = 20;
a = 10;
b = -20;
c = 50;
printf("a+b=%d c+u=%d\n", a + b, c + u);
return 0;
}
数据在内存中以二进制形式存放。
实际上,数值是以补码表示的。一个正整数的补码和该数的原码相同。负数的补码是:将该数的绝对值的二进制形式,按位取反再加1。
如果系统给一个整型变量分配4个字节,则变量的最大允许值为2147483647,若超出最大职则出现溢出现象。
整型变量的分类规则: (VS中)
(1)一个整数,如果其值在-2147483647~+2147483647范围内,认为它是int型,它可以赋值给int型和long int型变量。
(2) 一个整数,如果其值超过了上述范围,而在-9223372036854775807i64~+9223372036854775807i64范围内,则认为它是为长整型。可以将它赋值给一个long long int型变量。
在一个整常量后面加一个字母l或L,则认为是long int型常量,例如123l、432L、0L等,这往往用于函数调用中。如果函数的形参为long int型,则要求实参也为long int型。 (4) 一个整常量后面加一个字母u或U,认为是unsigned int型,如12345u在内存中按unsigned int规定的方式存放(存储单元中最高位不作为符号位,而用来存储数据)。
-
浮点型数据
浮点类型两种表示形式
注意:字母e(或E)之前必须有数字,且e后面的指数必须为整数
1e3、1.8e-3、-123e-6、-.1e-3(正确)
e3、2.1e3.5、.e3、e(错误)
在字母e(或E)之前的小数部分中,小数点左边 应有一位(且只能有一位)非零的数字.
例如: 123.456可以表示为: 123.456e0, 12.3456e1, 1.23456e2, 0.123456e3, 0.0123456e4, 0.00123456e 其中的1.23456e3称为“规范化的指数形式”。
浮点型变量
(1)浮点型变量分为单精度(float型)、双精度(double型)和长双精度型(long double)三类形式。
2)浮点型数据在内存中的存放形式:一个浮点型数据一般在内存中占4个字节(32位)。与整型数据的存储方式不同,浮点型数据是按照指数形式存储的。系统把一个浮点型数据分成小数部分和指数部分,分别存放。指数部分采用规范化的指数形式。
C编译系统将浮点型常量作为双精度来处理。
例如:f = 2.45678 * 4523.65
系统先把2.45678和4523.65作为双精度数,然后进行相乘的运算,得到的乘也是一个双精度数。
如果把一个浮点型常量赋给一个单精度变量f系统给出警告,警告不影响连接和运行最后结果.但只取其结果前7位赋给浮点型变量f。
如是在数的后面加字母f或F(如1.65f, 654.87F),编译系统就会把它们按单精度处理。
-
字符型数据
(1)用单引号包含的一个字符是字符型常量 (2)只能包含一个字符。例如'a' 'A' 'ABC'
一个字符常量存放到一个字符变量中,实际上并不是把该字符的字型放到内存中去,而是将该字符的相应的ASCII代码放到存储单元中。这样使字符型数据和整型数据之间可以通用
注意: 一个字符数据既可以以字符形式输,也可以以整数形式输出以字符形式输出时,系统先将存储单元中的ASCII码转换成相应字符, 然后输出。 以整数形式输出时,直接将ASCII码作为整数输出。也可以对字符数据进行算术运算, 此时相当于对它们的ASCII码进行算术运算。