整数(short,int,long)
一位是一bit,八位是一字节,字的长度要针对具体的机器环境。
int一般占用四个字节,即32位,在int前面加short/long,可以占用更少/更多的内存,short占用2个字节,long一般占用4或6或8个字节。
short int a = 1;
short int b, c = 9;
long int m = 112633;
long int n, p = 762331;
也可以省略int,如:
short a = 1;
short b, c = 9;
long m = 112633;
long n, p = 762331;
对于三种类型的变量所占内存大小在不同机器上可能有所不同。
- short 至少占用 2 个字节。
- int 建议为一个机器字长。32 位环境下机器字长为 4 字节,64 位环境下机器字长为 8 字节。
- short 的长度不能大于 int,long 的长度不能小于 int。
还可以在前加unsigned表示其为无符号数(不加unsigned默认为有符号数),可以将变量范围扩大一倍,但其所占内存大小不变,不过只能为正数。
unsigned short a = 12;
unsigned int b = 1002;
unsigned long c = 9892320;
在64位Windows系统中,short是2位,int和long均为4位。
注:可以使用sizeof操作符获得某个数据类型的长度。
注意取余%只能对整数进行运算,且余数为正为负,由 % 左边的整数决定:
- 如果 % 左边是正数,那么余数也是正数;
- 如果 % 左边是负数,那么余数也是负数。
/*
100%12=4
100%-12=4
-100%12=-4
-100%-12=-4
*/
小数(float,double)
小数长度是固定的,float是4个字节,double是8个字节
long a = 100;
int b = 294;
float x = 52.55;
double y = 18.6;
整数默认为int,小数默认为double,即给a赋值时,先要将int型的100转换为long型,然后再赋给a;给x赋值时,要将double型的52.55先转换为float型,然后赋给x。
进行整型和浮点型数据运算时,要特别注意,小数赋给整型变量会丢掉后面的小数部分,同时要特别注意通过运算给浮点型变量的赋值,如:
float a;
float b;
float c;
a=1/3;
b=1.0/3;
c=1/3.0;
上面的代码,最后a的值会是3,后面的小数部分会舍弃掉,而b和c才会正确得到我们想要的值,1.0/3和1/3.0算出来是double型的。
字符与字符串(char)
char的长度为一个字节。
正确赋值:(单引号,ASCⅡ包含的字符)
char a = '1';
char b = '$';
char c = 'X';
char与整数有一定的联系,可以有如下的赋值:(相应的字符和其ASCⅡ码对应)
char a = 70; //即char a = 'F';
int b = 'H'; //即int b = 72;
实际上字符和整数都是以整数形式存储的。
下面是两种字符串的定义方式:
char str1[] = "skgb";
char *str2 = "skgb";
类型强制转换
#include <stdio.h>
int main()
{
int sum = 22; //总数
int count = 7; //数目
double average; //平均数
average = (double)sum / count;
return 0;
}
(double)sum将sum强制转化为double型,再与count运算,最后得到double型的结果,这样就不会失真,若不要(double),average得到的结果将是3,即将后面的小数舍掉了。强制转换仅在此次运算中生效,并不会改变原有的数据类型,即sum仍然为int型。
注意:不能写成这样:
average = (double)(sum / count);
这样得到的结果仍然会是3。
附优先级:
赋值运算符(=) < ||<&& < 关系运算符 < 算术运算符 < 非(!)